Appearance
58-I.翻转单词顺序
两种方法
- 双指针
class Solution {
public String reverseWords(String s) {
// 去除收尾空格
s = s.trim();
// 双指针
int i = s.length() - 1,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();
}
}
- API
class Solution {
public String reverseWords(String s) {
String[] strs = s.trim().split(" "); // 删除首尾空格,分割字符串
StringBuilder res = new StringBuilder();
for(int i = strs.length - 1; i >= 0; i--) { // 倒序遍历单词列表
if(strs[i].equals("")) continue; // 遇到空单词则跳过
res.append(strs[i] + " "); // 将单词拼接至 StringBuilder
}
return res.toString().trim(); // 转化为字符串,删除尾部空格,并返回
}
}