1. 本题知识点
字符串
2. 题目描述
牛客最近来了一个新员工 Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事 Cat 对 Fish 写的内容颇感兴趣,有一天他向 Fish 借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是 “I am a student.”。Cat 对一一的翻转这些单词顺序可不在行,你能帮助他么?
3. 解题思路
-
输入原字符串
“student. a am I”
-
以空格分割原字符串,得到分割后的字符串数组
["student.", "a", "am", "I"]
-
将分割后的字符串数组从尾到头合并在一起,如果不是字符串数组的第一个元素,合并时要加上空格
“I am a student.”
-
如果合并后字符串为空,说明原字符串为空格串,则直接返回原字符串(这里我也想不通为什么正常人类会写空格串)
" "
4. 代码
public class Solution {
public String ReverseSentence(String str) {
// 以空格分割原字符串,得到分割后的字符串数组
String[] split = str.split(" ");
StringBuilder sb = new StringBuilder();
// 将分割后的字符串数组从尾到头合并在一起
for (int i = split.length - 1; i >= 0; i--) {
sb.append(split[i]);
// 如果不是第一个字符串数组,合并时加上空格
if (i > 0) {
sb.append(" ");
}
}
// 如果合并后字符串为空,说明原字符串为空格串,则直接返回原字符串
if (sb.toString().isEmpty()) {
return str;
}
// 返回合并后字符串
return sb.toString();
}
}