//题目1:翻转单词顺序例如“Hello world!”翻转后为world! Hello。 //思路:首先翻转整个字符串,然后再分别翻转每个单词。 //题目2:左旋转字符串,是将字符串的前面几个(n)字符放到整个字符串的后面。例如:“helloWorld”,旋转后lloWorldhe //思路:将字符串分成两半分别翻转,然后整个翻转。 public class ReverseWord { //翻转一个字符串 public void reverseWord(char[] a,int start,int end){ if(a==null) return; while(start<end){ swrap(a,start,end); start++; end--; } } public void swrap(char[] a, int start, int end) { char temp=a[start]; a[start]=a[end]; a[end]=temp; } //翻转单词的顺序 public void ReverseWordSequence(char[] a){ if(a==null) return; reverseWord(a,0,a.length-1); int start=0; int end=0; while(start<a.length ){ if(a[start]==' '){ start++; end++; } else if(a[end]==' '){ reverseWord(a,start,--end); start=++end; } else if(end==a.length-1){ reverseWord(a,start,end);//最后一个单词 break; } else end++; } } //左旋转字符串 public void LeftReverseString(char[] a,int n){ if(a==null) return; if(n<a.length&&n>0){ int startFirst=0; int endFirst=n-1; int startSecond=n; int endSecond=a.length-1; reverseWord(a,startFirst,endFirst); reverseWord(a,startSecond,endSecond); reverseWord(a,0,a.length-1); } } public static void main(String[] args){ String s="hello world i am love!"; char[] a=s.toCharArray(); ReverseWord rw=new ReverseWord(); rw.LeftReverseString(a, a.length); for(char c:a) System.out.print(c+" "); System.out.println(); rw.ReverseWordSequence(a); for(char c:a) System.out.print(c+" "); System.out.println(); } }