剑指offer-第六章面试中的各项能力(翻转单词的顺序VS左旋转字符串)

//题目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();
        
    }
}
原文地址:https://www.cnblogs.com/hupp/p/4771464.html