leetcode 344. 反转字符串 541. 反转字符串 II 双指针解
目录
- leetcode 344.反转字符串
- 1、题目
- 2、思考
- leetcode 541. 反转字符串 II
- 1、题目
- 2、思考
leetcode 344.反转字符串
1、题目
2、思考
典型的双指针解法:
一个从前往后,一个从后往前,指针对应的交换即可。
class Solution {public:void reverseString(vector<char>& s) {int start=0;int end=s.size()-1;if(end == -1) return ;while(start<=end){char tmp = s[start];s[start]=s[end];s[end] = tmp;start++;end--;}}
};
leetcode 541. 反转字符串 II
1、题目
2、思考
交换的基础部分还是和双指针有关,主要增加了逻辑上的复杂程度。
我的逻辑描述如下:
1、获取字符串长度(s_size )、并按照2k来划分组数(group_nums ),并且计算剩下来的不能组成一组的元素的个数(left_nums )
2、将翻转包装成函数,只要输入start 和end值即可
3、循环对组内的元素进行按照题目中的描述翻转,确定start 为该组第一个元素,end为start加上k,保证前k个元素翻转
4、对剩下的元素个数进行判断
5、如果剩余字符小于k个,start = (group_nums) * 2 * k,end为s最后一个字符
6、如果剩余字符小于2k个,start = (group_nums) * 2 * k,end=start+k
class Solution {public:void myreverse(string& s, int start, int end){while (start <= end){char tmp = s[start];s[start] = s[end];s[end] = tmp;start++;end--;}}string reverseStr(string s, int k) {int s_size = s.size();int group_nums = s_size / (2 * k);int count = group_nums;int left_nums = s_size - 2 * k * group_nums;while (count > 0){int start = (count - 1) * 2 * k;int end = start + k - 1;myreverse(s, start, end);count--;}//剩下字符翻转if (left_nums < k){int start = (group_nums) * 2 * k;int end = s_size - 1;myreverse(s, start, end);}else if (left_nums < 2 * k){int start = (group_nums) * 2 * k;int end = start + k - 1;myreverse(s, start, end);}return s;}
};
leetcode 344. 反转字符串 541. 反转字符串 II 双指针解相关推荐
- 代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符
一.344.反转字符串 力扣 思路:很简单的一个for循环双指针,left和right交换. class Solution {public void reverseString(char[] s) { ...
- 代码随想录算法训练营第八天|344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串
一.344.反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的 ...
- 备战sp23春招 day8 | 344.反转字符串 541. 反转字符串II 剑指 05.替换空格 151.翻转字符串里的单词 剑指58-II.左旋转字符串
344 反转字符串 class Solution {public:void reverseString(vector<char>& s) {int n = s.size();int ...
- LeetCode 18. 四数之和 思考分析(双指针解)
目录 需要注意的几点 1.去除剪枝操作 2.去重操作的细节 code以及效果: 题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b, ...
- LeetCode 15. 三数之和 思考分析(双指针解)
目录 初解:未考虑去重 二解:未考虑去重位置 三解:AC 题目: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找 ...
- 【必备算法】字符串(反转问题):LeetCode题 344. 反转字符串,541. 反转字符串 II,917. 仅仅反转字母
写在前面,反转数组的思路很简单,就是借助双指针不断将首尾相应位置的字符交换.Java模板如下: public void reverseArray(char[] arr) {int i = 0, j = ...
- 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串
LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...
- Suzy找到实习了吗Day 8 | 字符串开始啦 344. 反转字符串,541. 反转字符串 II,剑指 Offer 05. 替换空格,151. 反转字符串中的单词,左旋转字符串
这里是目录 344. 反转字符串 题目 Solution 541. 反转字符串 II 题目 Solution(v1) Solution(v2) 剑指 Offer 05. 替换空格 做题记录 151. ...
- leetcode——344. 反转字符串
leetcode--344. 反转字符串 问题概述: 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入 ...
最新文章
- mysql数据库oem_Oracle 11gR2学习之二(创建数据库及OEM管理篇)
- Chrome开发,debug的使用方法。
- 不在JPA 的 persistence.xml 文件里配置Entity class的解决的方法
- Oracle adviser,Oracle10g SQL tune adviser
- 2014腾讯实习生招聘软件开发类附加题
- jquery.tmplate使用心得
- python install causes ModuleNotFoundError: No module named ‘_swigfaiss‘
- idea ssm打war包_使用idea新建springBoot+Gradle项目(超详细)
- Linux中,Mysql安装
- Qt网络编程——TCP
- linux目录与文件
- Matlab定义自定义深度学习网络中间层
- FileUtils工具类学习
- 拼多多显示内部服务器错误是怎么回事,拼多多提现出现错误怎么办?拼多多提现常见问题...
- python操作网页flash视频_selenium自动化过程中如何操作Flash动画
- win32.mak下载地址github
- [vue3.x]实战问题--Extraneous non-props attributes
- 案例教程:一步步教你ps制作二寸照片
- java程序设计实用教程高飞pdf_普通高等教育“计算机类专业”规划教材:Java程序设计实用教程习题集 pdf epub mobi txt 下载...
- 传统民俗闹新春 浙江千年古村飘“非遗年味”