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

[动画详解]LeetCode151.翻转字符串里的单词

💖💖💖欢迎来到我的博客,我是anmory💖💖💖
又和大家见面了
欢迎来到动画详解LeetCode算法系列
用通俗易懂的动画让算法题不再神秘
先来自我推荐一波
个人网站欢迎访问以及捐款
推荐阅读
如何低成本搭建个人网站
专栏:动画详解leetcode算法题
C语言知识

玉桂狗吃东西

题目描述

题目描述


解题思路

我们的思路就是先让整句话变得正常,也就是去掉开头和结尾多余的空格
再去掉单词之间多余的空格
当句子变得正常之后,我们就可以先将整个字符串反转,再将每一个单词反转
这样就做到反转字符串里的单词了


动画详解

动画详解


代码实现

// 翻转字符串中指定范围的字符
void reversePos(char* s, int start, int end)
{int left = start;int right = end;char* tmp;while (left <= right){tmp = s[right];s[right] = s[left];s[left] = tmp;left++;right--;}
}// 去除单词中多余的空格
void delSpace(char* s)
{// 使用双指针来删除单词中多余的空格int left = 0;int right = strlen(s)-1;// 删除第一个单词之前的空格while(s[left] == ' '){left++;}// 删除最后一个单词之后的空格while(s[right] == ' '){right--;}// 删除单词中间多余的空格,双指针法删除int slow = 0;for(int i = left;i<=right; i++){// 如果遇到两个及以上空格那么就跳过if(s[i]==' ' && s[i+1]==' '){continue;}s[slow] = s[i];slow++;// i不++,因为在循环内部i已经在++了}s[slow] = '\0';// 在最后添加\0
}char* reverseWords(char* s) 
{// 先删除两端和中间多余的空格delSpace(s);// 反转整个字符串reversePos(s,0,strlen(s)-1);// 反转字符串里的单词int slow = 0;// 指向每一个单词开头的指针for(int i = 0; i<=strlen(s); i++)// 遍历字符串,包括\0{if(s[i]==' '|| s[i]=='\0')// 当位置为空或\0就说明单词结束{reversePos(s,slow,i-1);// 此时i所在的地方字符是空格slow = i+1;}}return s;
}

复杂度分析

可以看出循环的层数都是一层,因此时间复杂度为O(n)


总结

💖💖💖非常感谢各位的支持💖💖💖
我们共同进步
本系列持续更新,关注我,带你手撕算法题
下期再见
玉桂狗吃东西

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

相关文章:

  • 如何使用 ArcGIS Pro 制作地震动画
  • Unity 初步了解
  • 爬虫学习(4)每日一笑
  • 生产环境节点扩容方案
  • Spring线程池配置
  • Unity学习笔记---物理引擎
  • Vue与Java使用AES加密与解密
  • B/S版+java开发的医院绩效考核系统maven+Visual Studio Code 医院绩效考核管理系统 提升医疗服务质量的关键
  • 汇昌联信科技:拼多多电商的运营流程有哪些?
  • AI大模型探索之路-训练篇20:大语言模型预训练-常见微调技术对比
  • 现代 c++ 一:c++11 ~ c++23 新特性汇总
  • 【c++】全面理解C++多态:虚函数表深度剖析与实践应用
  • 分享四种免费获取SSL的方式
  • 2024.5.14晚训题解
  • jQuery的选择器与自带函数详解
  • Next.js与SSR:构建高性能服务器渲染应用
  • 什么是MVC?什么是SpringMVC?什么是三层架构?
  • 基于springboot+vue+Mysql的在线答疑系统
  • ssl证书免费申请指南
  • Java构造方法详解
  • Spring WebFlux:响应式编程
  • uniapp、web网页跨站数据交互及通讯
  • 2024-05-10 Ubuntu上面使用libyuv,用于转换、缩放、旋转和其他操作YUV图像数据,测试实例使用I420ToRGB24
  • 怎么给视频加水印?2招轻松搞定
  • SpringBootWeb 篇-深入了解请求响应(服务端接收不同类型的请求参数的方式)
  • 实验十 智能手机互联网程序设计(微信程序方向)实验报告
  • Python图形复刻——绘制母亲节花束
  • 【算法优选】 动态规划之子数组、子串系列——壹
  • PXE+Kickstart无人值守安装安装Centos7.9
  • C语言实现通讯录,包括增删改查以及动态开辟内存,写入文件等功能