描述
把一个句子的单词进行反转,例如"how are you"改为"you are how"。
分析
两次反转,第一次对整个字符串反转为"uoy era woh",第二次再对每个单词进行反转。
代码
public class Test { //反转chars[start,end]的内容 public void swap(char[] chars,int start,int end){ char tmp; while(start<end){ tmp=chars[start]; chars[start]=chars[end]; chars[end]=tmp; start++; end--; } } // public String swapString(String str){ char[] chars=str.toCharArray(); swap(chars,0,str.length()-1); int start=0; boolean flag=false; //是否确定了反转单词的开头位置 for(int i=0;i<chars.length;i++){ if(chars[i]==' ') { if (flag) { swap(chars, start, i-1); flag=false; } }else{ if(!flag){ flag=true; start=i; } } } if(flag) swap(chars,start,str.length()-1); //如果不加得到的结果就会是you are woh return new String(chars); } public static void main(String[] args) { System.out.println(new Test().swapString("how are you")); } }