题目描述
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。
问题解析
本题使用双指针的方法进行遍历
s.trim()方法去除空格键,让i,j从尾部开始遍历当i遍历到空格的时候,使用substring进行截取,把单词截取出来放到res新建StringBuilder后面,最终使用tostring转换成字符串。
代码实例
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public String reverseWords(String s) {
public String reverseWords(String s) {
s = s.trim();
int i = s.length() - 1;
int j = i;
StringBuilder res = new StringBuilder();
while(i >= 0){
while(i >= 0 && s.charAt(i) != ' '){
i--;
}
res.append(s.substring(i + 1,j + 1) + ' ');
while(i >= 0 && s.charAt(i) == ' '){
i--;
}
j = i;
}
return res.toString().trim();
}
}
}