题解 | #翻转单词序列#
翻转单词序列
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); } } }