题目描述: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
使用java容易联想到字符串连接符 + . 那么一个单词为:从不是空格的字符开始到是空格的前一个字符结束,即为一个单词。
public class Solution { public String ReverseSentence(String str) { if(str.isEmpty()){ return str; } int bs = 0;//记录空格的个数 char [] ch = str.toCharArray(); int len = ch.length; char [] temp = new char[len]; while (bs < len && ch[bs] == ' ') { bs++; } if(bs == len){//全是空格 return str; } String tmp = ""; String ans = ""; boolean hasStr = false; for(int i = len - 1; i >= 0; i--){ if( ch[i] != ' '){ tmp = ch[i] + tmp;//不是空格,连接成单词 hasStr = true; } else if(ch[i] == ' ' && hasStr) {//遇到空格 ans = ans + tmp + " "; tmp = ""; hasStr = false; } } if(tmp != ""){ ans = ans + tmp; } return ans; } }