当前位置: 首页 > news >正文

代码随想录算法训练营第九天| 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个逆置,再把剩余的逆置。

 字符串总结

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

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

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

如有指正,十分感谢

http://www.lqws.cn/news/159481.html

相关文章:

  • 25.6.5学习总结
  • day47 TensorBoard学习
  • label-studio的使用教程(导入本地路径)
  • 优化学习笔记
  • 热门消息中间件汇总
  • JAVA-springboot JUnit单元测试
  • 【Android基础回顾】五:AMS(Activity Manager Service)
  • 亚马逊AWS云服务器高效使用指南:最大限度降低成本的实战策略
  • 【二分图 染色法 BFS】B4188 [中山市赛 2024] 参数拟合|普及+
  • 力扣LeetBook数组和字符串--二维数组
  • k8s业务程序联调工具-KtConnect
  • 宠物车载安全座椅市场报告:解读行业趋势与投资前景
  • k8S 命令
  • 攻防世界RE-happyctf
  • AI变革思考2:当小众需求遇上人工智能,催生长尾应用的春天
  • 【学习笔记】MIME
  • 今日科技热点速览
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十五讲)
  • JS 节流(Throttle)与防抖(Debounce)详解
  • MCP实践
  • MySQL 的锁机制【深度全面】
  • HBuilder 发行Android(apk包)全流程指南
  • Flyway
  • Spring WebFlux 整合AI大模型实现流式输出
  • 数据库优化实战分享:高频场景下的性能调优技巧与案例解析
  • c#基础010(程序结构)
  • 深度解析数字营销专属大模型 AdLLM 的训练思路
  • 监控硬盘可以当台式机硬盘用吗
  • 【数据结构】5. 双向链表
  • Vue3解决“找不到模块@/components/xxx.vue或其相应的类型声明ts文件(2307)”