实现字符串反转

描述

把一个句子的单词进行反转,例如"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"));
    }
}

 

posted @ 2017-01-30 17:52  hellozay  阅读(482)  评论(0编辑  收藏  举报