欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 代码随想录算法训练营第九天| 151.翻转字符串里的单词、55.右旋转字符串 、字符串总结

代码随想录算法训练营第九天| 151.翻转字符串里的单词、55.右旋转字符串 、字符串总结

2026/3/12 1:39:43 来源:https://blog.csdn.net/weixin_69353983/article/details/148455158  浏览:    关键词:代码随想录算法训练营第九天| 151.翻转字符串里的单词、55.右旋转字符串 、字符串总结

151.翻转字符串里的单词

初始思路:先遍历一遍,统计字符串中单词加上空格的长度。然后设立一个指针,指向旧字符串的最后一个,倒着把旧字符串复制到新字符串中(复制的时候遇到空格只复制一个,同时去掉前后的空格),然后用双指针法把新字符串中的单词正过来(一个指针指向单词的第一个,另一个一直遍历到下一个位置是空格或者是字符串的最后一个位置)。

class Solution {public String reverseWords(String s) {StringBuilder sb =  removeSpace(s);reverseString(sb, 0,sb.length()-1);reverseEachWords(sb);return sb.toString();}StringBuilder removeSpace(String s){//先去除首尾空格int left = 0;int right = s.length() - 1;while(s.charAt(left) == ' ') left++;while(s.charAt(right) == ' ') right--;StringBuilder sb = new StringBuilder();//存放最后处理好的字符串//去除中间空格while(left <= right){//从头到尾遍历,要包括等于,因为最后一个单词也要转移char c = s.charAt(left);if(c != ' ' || sb.charAt(sb.length() - 1) != ' '){//若当前不是空格 或 当前是空格但是新字符串的前一个不是空格sb.append(c);}left++;}return sb;}void reverseString(StringBuilder sb, int left, int right){while(left < right){char temp = sb.charAt(left);sb.setCharAt(left, sb.charAt(right));sb.setCharAt(right, temp);left++;right--;}}void reverseEachWords(StringBuilder sb){int left = 0;int right = 1;int length = sb.length();while(right<length){while(right < length && sb.charAt(right) != ' '){right++;}reverseString(sb,left,right-1);left = right+1;right = left +1;}}
}

55.右旋转字符串

思路:先把字符串整体逆置,再把前n个逆置,再把剩余的逆置。

 字符串总结

面试的时候可能分析时间复杂度,这时候需要属性常见库函数的时间复杂度;

写代码的时候,一些常见的方法和常用类要熟记。

鉴于作者水平有限,文章可能存在错误

如有指正,十分感谢

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词