题解 | #翻转单词序列#

翻转单词序列

http://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3

使用双指针,i指向前面,j指向后面(其实也是双指针解题)。每次遇到空格进行截取,如果遇到了为空(i,j指向同一个位置,说明遇到了多个空格),不为空则为一个单词则进行截取。要对最前面没有空格的情况进行特殊处理。

public class Solution {
    public String ReverseSentence(String s) {
        int lens=s.length();
        if(lens<1){
            return s;
        }
        int i=lens-1,j=lens-1;
        String result="";
        boolean flag=false;
       while(i>=0){
            if(s.charAt(i)==' '){
                if(!s.substring(i+1,j+1).isEmpty()){
                    String s2=s.substring(i+1,j+1);

                    result+=s2;
                    result+=" ";
                    j=i;

                }
                j--;
                i--;

            }else{
                i--;

            }
            // 处理最前面没有空格的情况
            if(i==0 && s.charAt(i)!=' ' ){
                result+=s.substring(i,j+1);
                flag=true;
            }

        }
       if(flag){
           return result;
       }else{
           int len=result.length();
           return result.substring(0,len-1);
       }

    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务