剑指offerDay29----翻转单词顺序列

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

思路:

方法一:由题意,可用stack存储单词,出栈后的顺序即为正常顺序。
方法二:先将整个字符串全部翻转,然后再将每个单词翻转即可。

源码:GitHub源码

方法一:

import java.util.*;
public class Solution {
    public String ReverseSentence(String str) {
        if(str == null || str.trim().equals("")) return str;
        Stack<String> stack = new Stack<>();
        String[] tmp = str.split(" ");
        for(String x : tmp){
            stack.push(x);
        }
        String result = stack.pop();
        while(!stack.isEmpty()){
            result += " " + stack.pop();
        }
        return result;
    }
}

方法二:

public class Solution {
    public String ReverseSentence(String sr) {
        if(sr == null || sr.trim().equals("")) return sr;
        char[]str = sr.trim().toCharArray();
        Reverse(str,0,str.length - 1);
        int low = 0;
        int high = 0;
        while(low != str.length){
            if(str[low] == ' '){
                low++;
                high++;
            }else if(str[high] == ' '){
                Reverse(str,low,high - 1);//注意:翻转时,空格不动
                ++high;
                low = high;
            }else if(high == str.length- 1){
                Reverse(str,low,high);
                ++high;
                low = high;
            }else{
                high++;
            }
        }
        return String.valueOf(str);
    }
    
    public void Reverse(char[] str,int start,int end){
        while(start <= end){
            char tmp = str[start];
            str[start] = str[end];
            str[end] = tmp;
            start++;
            end--;
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述 [翻转单词顺序列] 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同...
    一只可爱的柠檬树阅读 342评论 0 0
  • 本文首发于我的个人博客:尾尾部落 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句...
    繁著阅读 752评论 0 2
  • 翻转单词顺序列 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事C...
    Jacinth阅读 425评论 0 0
  • 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写...
    夏臻Rock阅读 1,019评论 0 0
  • 题目描述:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写...
    大数据Zone阅读 158评论 0 1