LeetCode 力扣 557. 反转字符串中的单词 III reverse Words In A String III

大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn


文章目录

  • 557. 反转字符串中的单词 III
    • 题目描述
    • 示例:
    • 提示:
      • 朴素版本
      • 原地解法
    • 提交结果

557. 反转字符串中的单词 III

题目描述

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例:

输入:"Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"

提示:

在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

朴素版本

分割,然后倒序存储

class Solution {
     
    public String reverseWords(String s) {
     
        String[] ss = s.split(" ");
        StringBuilder sb = new StringBuilder();
        for(int i=0; i< ss.length;i++){
     
            int len = ss[i].length();
            for(int j=0;j<len;j++){
     
                sb.append(ss[i].charAt(len-j-1));
            }
            sb.append(" ");
        }
        sb.deleteCharAt(sb.length()-1);
        return sb.toString();
    }
}

原地解法

通过下标来获取每个单词的位置

class Solution {
     
    public String reverseWords(String s) {
     
        int len = s.length();
        char[] chars = s.toCharArray();
        char[] res = new char[len];
        int left = 0, right = 0, mem = 0;
        int ptr = 0;
        while (left < len && right < len) {
     
            while (right < len && chars[right] != ' ') {
     
                right++;
            }
            for (int i = right - 1; i >= left; i--) {
     
                res[ptr++] = chars[i];
            }
            if (ptr < len - 1) res[ptr++] = ' ';
            left = right + 1;
            right++;
        }
        return String.valueOf(res);
    }
}

提交结果

LeetCode 力扣 557. 反转字符串中的单词 III reverse Words In A String III_第1张图片


2020年8月30日更

大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn


你可能感兴趣的:(#,算法其他,字符串,leetcode,正则表达式,curl,lighttpd)