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

代码随想录算法训练营第九天 | leetcode 151 卡特55

    1. 反转字符串中的单词
      整体思路:先将整体翻转,再进行翻转其中的单词,以空格划分进行单词操作,使用快慢指针思想,快指针获取符合题目要求的字母,慢指针是获取到字母后更新到哪里
      代码如下:class Solution { public String reverseWords(String s) { char [] c = s.toCharArray();//将字符串转化成字符数组进行操作 //获得去除多余空格的字符数组 c = removeEmpty(c); //翻转整个字符串 reverse(c,0,c.length-1); //翻转每个单词 reverseEachWord(c); return new String(c); } public char[] removeEmpty(char [] arr){ //使用快慢指针进行多余空格的去除 int slow = 0; for(int fast = 0;fast<arr.length;fast++){ if(arr[fast]!=' '){//不是空格,如果是空格直接跳过,这样就能去掉多余空格 if(slow!=0){//判断是不是首字母,如果不是则赋值空格替代fast前一个空格,只留一个空格 arr[slow++]=' '; } while(fast<arr.length&&arr[fast]!=' '){//复制寻找单词 arr[slow++] = arr[fast++]; } } } char []newChar = new char[slow]; System.arraycopy(arr,0,newChar,0,slow); return newChar; } public void reverse(char [] ch,int left,int right){ if(right>=ch.length){ return; } while(left<right){ char temp = ch[left]; ch[left] = ch[right]; ch[right] = temp; left++; right--; } } public void reverseEachWord(char []ch){ int start = 0; for(int end = 0;end<=ch.length;end++){ if(end==ch.length||ch[end]==' '){//遇到空格进行单词翻转 reverse(ch,start,end-1); start = end+1; } } } }
  • 卡码网:55.右旋转字符串
    解题思路:先反转全部,再翻转前k个,再翻转剩余部分的
  • 其余部分跳过进行二刷
http://www.hskmm.com/?act=detail&tid=25232

相关文章:

  • [题解] 分竹子
  • 分数规划
  • CSS - transition 粗浅记忆
  • 【MC】LittleTiles模组结构数据解析和版本迁移方案
  • 容器魔方导致盒子满了
  • 课程学习笔记——[大一秋]遗传学
  • P3067 [USACO12OPEN] Balanced Cow Subsets G
  • Vivado 2025 界面中文设置
  • 词汇学习——专业词汇
  • P4556 [Vani有约会] 雨天的尾巴 [模板] 线段树合并
  • P4550 收集邮票
  • P8110 [Cnoi2021] 矩阵
  • P9751 [CSP-J 2023] 旅游巴士
  • P9234 [蓝桥杯 2023 省 A] 买瓜
  • P1044 [NOIP 2003 普及组] 栈
  • P1080 [NOIP 2012 提高组] 国王游戏
  • 音响没声音
  • P1654 OSU!
  • DynamoDB十年演进:云原生数据库的技术革新
  • 完整教程:MySQL全量、增量备份与恢复
  • 10/5
  • 10/4
  • 嵌入式MCU
  • porting perf性能观测工具
  • Windows常用快捷指令
  • Python 在金融中的应用- Part 1 - 教程
  • QBXT2025S刷题 Day4
  • java学习日记9.25
  • porting 开源memtester
  • 计算机的组成