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

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

翻转字符串里的单词

把之前的字符串操作都用上了

/** @lc app=leetcode.cn id=151 lang=java** [151] 反转字符串中的单词*/// @lc code=start
class Solution {//用 char[] 来实现 String 的 removeExtraSpaces,reverse 操作public String reverseWords(String s) {char[] chars = s.toCharArray();//1.去除首尾以及中间多余空格chars = removeExtraSpaces(chars);//2.整个字符串反转reverse(chars, 0, chars.length - 1);//3.单词反转reverseEachWord(chars);return new String(chars);}//1.用 快慢指针 去除首尾以及中间多余空格,可参考数组元素移除的题解public char[] removeExtraSpaces(char[] chars) {int slow = 0;for (int fast = 0; fast < chars.length; fast++) {//先用 fast 移除所有空格if (chars[fast] != ' ') {//在用 slow 加空格。 除第一个单词外,单词末尾要加空格if (slow != 0)chars[slow++] = ' ';//fast 遇到空格或遍历到字符串末尾,就证明遍历完一个单词了while (fast < chars.length && chars[fast] != ' ')chars[slow++] = chars[fast++];}}//相当于 c++ 里的 resize()char[] newChars = new char[slow];System.arraycopy(chars, 0, newChars, 0, slow); return newChars;}//双指针实现指定范围内字符串反转,可参考字符串反转题解public void reverse(char[] chars, int left, int right) {if (right >= chars.length) {System.out.println("set a wrong right");return;}while (left < right) {chars[left] ^= chars[right];chars[right] ^= chars[left];chars[left] ^= chars[right];left++;right--;}}//3.单词反转public void reverseEachWord(char[] chars) {int start = 0;//end <= s.length() 这里的 = ,是为了让 end 永远指向单词末尾后一个位置,这样 reverse 的实参更好设置for (int end = 0; end <= chars.length; end++) {// end 每次到单词末尾后的空格或串尾,开始反转单词if (end == chars.length || chars[end] == ' ') {reverse(chars, start, end - 1);start = end + 1;}}}
}
// @lc code=end

右旋转字符串

一开始反应用队列,如果原地旋转的话可以化为全反转一次,局部反转两次。

KPM

忘干净了,后面补上

http://www.jsqmd.com/news/487702/

相关文章:

  • Qwen3-TTS-Tokenizer-12Hz实战案例:有声书制作中章节音频统一token化方案
  • SpikeTrack: A Spike-driven Framework for Efficient Visual Tracking—— 一种用于高效视觉追踪的脉冲驱动框架
  • VSCode结合EmmyLua实现Lua代码高效调试指南
  • 深入解析javax.net.ssl.SSLHandshakeException:如何修复No negotiable cipher suite错误
  • 计算机网络基础:网络互联与核心设备 | 0基础入门必看
  • MedGemma 1.5保姆级教程:从Docker拉取镜像到浏览器访问6006端口
  • Qwen Pixel Art保姆级教程:从Docker安装到提示词工程(含20个优质模板)
  • ssm+java2026年毕设清空购物商城系统【源码+论文】
  • VideoAgentTrek-ScreenFilter在开源社区的应用:自动净化项目演示视频
  • ssm+java2026年毕设情报综合管理系统【源码+论文】
  • 烟花算法(FWA)实战:从原理到MATLAB实现与优化策略解析
  • 第三方应用程序漏洞和木马制作小实验
  • springboot基于Java的免税商品优选购物商城设计与实现代码.7z(源码+论文+ppt答辩)
  • ssm+java2026年毕设求知书友屋网站【源码+论文】
  • RPA 接管企业微信 WebSocket 长连接:从流量捕获到自动化监听
  • 小白友好:WAN2.2镜像部署详解,轻松玩转AI视频创作
  • AI 辅助开发实战:网络安全本科毕业设计的高效实现路径
  • IC验证调试——Verdi实战技巧与效率提升
  • 知识拓展:《补码为什么是“反码 + 1”?(计算机最神奇的设计)》与《为什么补码能表示的负数比正数多1个?(-128的秘密)》
  • AI辅助开发新体验:让快马AI深度参与飞牛漏洞的代码生成、修复与审计
  • YOLO12在遥感图像分析中的应用:地物分类与变化检测
  • 从阿里云到CloudFlare:一站式域名DNS托管迁移实战
  • ChatPaperFree GeminiPro:AI 助力科研,一分钟高效读论文
  • 数学的伟大艺术--Ars Magna, The Great Arts
  • ThinkPHP8集成Swoole WebSocket:从环境配置到进程守护的实战部署
  • wan2.1-vae开源可部署优势解析:自主可控文生图平台,告别API调用成本与限频
  • 07-redis性能优化
  • 计算机网络基础:ARP协议与网络安全实战 | 0基础网安入门
  • 单臂路由进阶:Hyper-V虚拟软路由实现单网口主路由与光猫剩余网口复用
  • VMware 25h2 安装 RHEL 8 并且使用xshell ssh连接指南