反转全部

思路:比较简单的双指针算法。

反转前2k个中的k个

思路:比较绕,简单来说就是规定每2k个单位之中,反转前k个字符。一开始我没搞懂题目,直接以为是每隔2交换字符= = ,但是注意,涉及到单位个这种,也就意味着我们在做反转任务的时候要采取区间模式,借用上一题的代码,改一下参数列表

接下来,我们就要分析如何确保我们每一轮都是比较【0,2k-1】【2k,4k-1】.......
就要通过for循环中的i定义基准,![]()
然后就是我们代码逻辑结构了:反转前k个字符,如果不够就反转全部

反转字符串的单词(偏难,涉及到空格)

用全部反转再局部反转的思路很难!!我写不出来,因为涉及到去除空格的操作
那就换一种思路:
一点细节:
- s.trim(); // 删除首尾空格
substring(int beginIndex, int endIndex):返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的索引beginIndex开始,直到索引endIndex- 1 处的字符。- stringBuilder->string
- 在 最后返回
res.toString().trim()而不是仅仅res.toString()的原因是为了确保最终返回的字符串不包含尾部的空格。
所以在收集答案的时候要(s.sustring(i+1,j+1)+" ");
class Solution {
public String reverseWords(String s) {
s = s.trim(); // 删除首尾空格
int i=s.length()-1,j=i;
StringBuilder res=new StringBuilder();
while(i>=0&&j>=0){
while(i>=0&&s.charAt(i)!=' ') i--;
res.append(s.sustring(i+1,j+1)+" ");
while(i>=0&&s.charAt(i)!=' ') i--;
j=i;
}
return res.toString().trim(); // 转化为字符串并返回
}
}





1004

被折叠的 条评论
为什么被折叠?



