LeetCode 第151题 翻转字符串里的单词 做题记录
题目描述
我的解法
思路
还是使用StringBuilder构造新的字符串,根据题目要求每两个字符串间都要有空格,那么关键问题的是从字符串中识别出单词,那就以空格为界,为了存储每个单词,还要建立一个string数组,建立string数组又要提前知道单词的个数,就需要提前遍历一遍。
综上需要对字符串进行两次遍历,建立一个String数组,一个StringBuilder,还要对建立后的String数组进行一次遍历。
突然想到,既然单词有首位末尾,那就可以用双指针法,而无需建立String数组
对应Java代码
class Solution {
public String reverseWords(String s) {
StringBuilder tmp = new StringBuilder();
int end = s.length() - 1;
int start = end;
int insertFlag = 0;
while(end >= 0){
while(end >= 0 && s.charAt(end) == ' '){
end--;}
start = end;
while(start >=0 && s.charAt(start) != ' '){
start--;}
for(int j = start + 1; j <= end; j++)