题目描述:
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
思路解析:
- 目标:把"I am a student."翻转成"student. a am I".
- 第一步:翻转整个字符串,使之变成".tneduts a ma I"
- 第二步:分离字符串,用空格隔开的字符串都分离成字符串数组,String[] strs = str1.split(" ");
- 第三步:把每个单个字符串都翻转一次,并连接" "(空格),注意:最后一个不需要加空格。
- 判空时,考虑只有空格的时候,使用str.strim().equals("");strim()是去掉空格啊!字符串比较要用equals()啊!
代码:
public class Solution {
public String ReverseSentence(String str) {
if(str==null||str.trim().equals("")){
return str;
}
String str1=reverse(str);
String[] strs = str1.split(" ");
if(strs==null)
return str;
String result = "";
for(int i=0;i<strs.length;i++){
strs[i]=reverse(strs[i]);
result=result+strs[i];
if(i!=strs.length-1){
result+=" ";
}
}
return result;
}
public String reverse(String str){
char[] a = str.toCharArray();
for(int i=0;i<(a.length)/2;i++){
char temp = a[i];
a[i]=a[a.length-1-i];
a[a.length-1-i]=temp;
}
return String.valueOf(a);
}
}