题目描述
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,表单符号和普通字符一样处理。例如输入字符串“I am a student.”,则输出”student. a am I”。
首先要翻转句子中单词的顺序,则先将整个句子翻转。然后要求单词内字符顺序不变,则对各个单词在进行一个翻转。单词间通常以空格字符分隔。
public class Solution {
public String ReverseSentence(String str) {
if (str == null) return null;
char [] strList = str.toCharArray();
Reverse(strList, 0, strList.length-1);
int begin = 0;
for (int i = 0; i < strList.length; i++) {
if (strList[i] == ' ') {
Reverse(strList, begin, i-1);
begin = i + 1;
}
}
if (begin < strList.length) // 最后一个单词不在循环内,单独翻转
Reverse(strList, begin, strList.length-1);
return String.valueOf(strList);
}
public void Reverse(char [] strList, int begin, int end) {
while (begin < end) {
char temp = strList[begin];
strList[begin] = strList[end];
strList[end] = temp;
begin++;
end--;
}
}
}
近期评论