0
点赞
收藏
分享

微信扫一扫

Leetcode 557: 反转字符串中的单词 III

攻城狮Chova 2022-04-04 阅读 292

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

class Solution {
    public String reverseWords(String s) {
        StringBuffer ret = new StringBuffer();
        int length = s.length();
        int i = 0;
        while(i < length){
            int start = i;
            while(i<length && s.charAt(i) != ' '){
                i++;
            }
            for(int pos = start; pos < i; pos++){
                ret.append(s.charAt(start + i - 1 - pos));
            }
            while(i<length && s.charAt(i) == ' '){
                i++;
                ret.append(' ');
            }
        }
        return ret.toString();
    }
}

思路:

开辟一个新字符串。然后从头到尾遍历原字符串,直到找到空格为止,此时找到了一个单词,并能得到单词的起止位置。随后,根据单词的起止位置,可以将该单词逆序放到新字符串当中。如此循环多次,直到遍历完原字符串,就能得到翻转后的结果。

如果是用C语言来写很简单,当判断到是 ' '的时候 直接交换单词的首尾位置即可! 

start是用来记录当前的字符串中的单词的起始位置;(是会随着i的变化而变化的)

pos也是用来存放当前单词的开始位置,用来遍历当前单词;

 

 

图解:

 

 

举报

相关推荐

0 条评论