剑指 Offer 58 - I. 翻转单词顺序

使用双指针的思路,即使用两个指针指向最后一个单词的开始和结束,然后使用substring() 进行切分,使用一个stringBuilder去存储结果即可。

需要注意的点:

    首先是最后有空格的情况的处理,需要想使i指向最后一个部位空格的字符,这里用倒叙循环解决 输出时最后一个字符串后面没有空格的问题,简繁使用一个flag解决,即每次添加单词前先添加空格,但第一个单词前不添加 `总体代码如下:
class Solution {
          
   
    public String reverseWords(String s) {
          
   
        StringBuilder ans = new StringBuilder();
        int  i= s.length() - 1;
        int j ;
        while(i >= 0 && s.charAt(i) ==  )//找到不为空格的单词位
           i--;
        boolean flag = true; //控制第一次不输入空格
        while(i >= 0)
        {
          
      
            j = i;
            while(i >= 0 &&s.charAt(i) !=   ){
          
   
              i--;
            }
            if(!flag)
            {
          
   
                ans.append( );
            }
            flag = false;
            ans.append(s.substring(i + 1 ,j + 1));
            while(i >= 0 && s.charAt(i) ==  )//跳过空格
            i--;
        }
        return ans.toString();
    }
}
经验分享 程序员 微信小程序 职场和发展