剑指 Offer 58 - I. 翻转单词顺序
这道题的链接: 剑指 Offer 58 - I. 翻转单词顺序
这道题我们刚开始审题,我感觉可以使用双指针来解决,具体思路就是从尾到头便利字符串树,然后将i,j两个变量定位在此,然后把i往前定位到倒数第一个单词的位置,新建一个StringBuilder接收单词加上空格,具体代码如下:
class Solution{
public String reverseWords(String s) {
s = s.trim();
int j = s.length() - 1, i=j;
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();
}
}
第二种方法就是很土的方法,因为这句话是用空格分割的,我们就用空格分割成数组,然后从后向前遍历数组,存到新的StringBuilder中,转化成数组就成了。
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] + " ");
}
return res.ToString().trim();
}
}
在面试的时候。。。千万别这么写,很土,写出来面试官就认为你是api工程师。。凉凉!!