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

代码随想录-字符串-反转字符串中的单词

题目

题解

法一:纯粹为了做出本题,暴力解

没有技巧全是感情

class Solution {public String reverseWords(String s) {//首先去除首尾空格s = s.trim();String[] strs = s.split("\\s+");StringBuilder sb = new StringBuilder();//定义一个公共的字符反转方法for(int i=strs.length-1;i>=0;i--){sb.append(strs[i]).append(" ");}return sb.toString().trim();}
}

法二:推荐解

结合前面的刷题技巧

整体反转加内部单词反转

1、去除前后字符

2、反转整个字符串

3、反转每个单词

class Solution {/**可以借助之前的题目里的反转字符串的方法,char数组+双指针*/public String reverseWords(String s) {char[] chars=s.toCharArray();//第一步,去除掉首尾和中间多余的空格chars = removeExtraSpaces(chars);//第二步,整个字符串反转reverse(chars,0,chars.length-1);//第三部,反转每个单词int start = 0;for(int i=0;i<=chars.length;i++){if(i== chars.length||chars[i]==' '){reverse(chars,start,i-1);start = i+1;}}return String.valueOf(chars);}public char[] removeExtraSpaces(char[] chars){//快慢指针来实现 原地将多余空格删除掉int slow = 0;for(int fast=0;fast<chars.length;fast++){if(chars[fast]!=' '){//在除了第一个单词外的每个单词前手动插入空格if(slow!=0){chars[slow++]=' ';}while(fast<chars.length&&chars[fast]!=' '){chars[slow++]=chars[fast++];}}}//将新的chars返回,[0,slow]char[] newChar = new char[slow];System.arraycopy(chars,0,newChar,0,slow);return newChar;}public void reverse(char[] chars,int low,int high){if(high>=chars.length){System.out.println("length out of index");return ;}while(low<high){char temp = chars[low];chars[low] = chars[high];chars[high] = temp;low++;high--; }}
}

http://www.lryc.cn/news/473258.html

相关文章:

  • 勒索软件通过易受攻击的 Cyber​​Panel 实例攻击网络托管服务器
  • Open WebUI + openai API / vllm API ,实战部署教程
  • InsuranceclaimsController
  • 如何成为开源代码库Dify的contributor:解决issue并提交PR
  • SQL进阶技巧:巧用异或运算解决经典换座位问题
  • 【MySQL】 运维篇—数据库监控:使用MySQL内置工具(如SHOW命令、INFORMATION_SCHEMA)进行监控
  • 【温酒笔记】DMA
  • 力扣判断字符是否唯一(位运算)
  • GPU和CPU区别?为什么挖矿、大模型都用GPU?
  • 新兴斗篷cloak技术,你了解吗?
  • 【抽代复习笔记】34-群(二十八):不变子群的几道例题
  • Chrome和Firefox如何保护用户的浏览数据
  • CentOS 7镜像下载
  • opencv-windows-cmake-Mingw-w64,编译opencv源码
  • Puppeteer点击系统:解锁百度流量点击率提升的解决案例
  • Kyber原理解析
  • 2024 CCF CSP-J/S 2024 第二轮认证 真题试卷
  • Android 无障碍服务常见问题梳理
  • Milvus 与 Faiss:选择合适的向量数据库
  • 2024最全CTF入门指南、CTF夺旗赛及刷题网站(建议收藏!)
  • 【论文阅读】ESRGAN+
  • 北京市首发教育领域人工智能应用指南,力推个性化教育新篇章
  • 【Java并发编程】信号量Semaphore详解
  • window11使用wsl2安装Ubuntu22.04
  • 虚拟滚动 - 从基本实现到 Angular CDK
  • Spring WebFlux学习笔记(一)
  • 富格林:正确追损思维安全交易
  • 前端vue2迁移至uni-app
  • 恋爱脑学Rust之闭包三Traits:Fn,FnOnce,FnMut
  • 区块链介绍