剑指offer---44.翻转单词顺序列

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44406146/article/details/102733403

题目描述

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

解法一:字符串拼接

public class Solution {
    public String ReverseSentence(String str) {
        if(str.length()==0||str.charAt(0)==' ') return str;
         String result = "";
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)==' '){
                    String tmp = str.substring(0,i);
                    result = tmp+" "+result;
                    str = str.substring(i+1,str.length());
                    i=0;
                }
            }
        return (str+" "+result).trim();	//去掉后边多的空格
    }
}

解法二:总有人更骚。。

public class Solution {
    public String ReverseSentence(String str) {
        if(str.trim().equals("")) return str;
        String[] ss = str.split(" ");
        StringBuilder sb = new StringBuilder();
        for(int i=ss.length-1;i>=0;i--){
            sb.append(ss[i]);
            if(i!=0){
                sb.append(" ");
            }
        }
        return sb.toString();
    }
}

解法三:脱离语言特性

思路: 如同上题,先整体转置然后各个单词置换

public class Solution {
    public String ReverseSentence(String str) {
        if(str.length()==0) return str;
        char[] array = str.toCharArray();
        reverse(array,0,array.length-1);
        int i=0;
        int low,high;
        while(i<array.length){
            while(i<array.length&&array[i]==' ') i++; //跳过空格
            low = i;
            while(i<array.length&&array[i]!=' '){
                i++;
            }
            high = i-1;
            reverse(array,low,high);
        }
        return String.valueOf(array);
    }
    private void reverse(char[] array,int low,int high){
        while(low<high){
            char tmp = array[low];
            array[low++] = array[high];
            array[high--] = tmp; 
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44406146/article/details/102733403