当前位置:网站首页>力扣541. 反转字符串 II ----双指针解法
力扣541. 反转字符串 II ----双指针解法
2022-07-29 13:25:00 【洋圏外の彼女】
题目
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例 1:
输入:s = “abcdefg”, k = 2
输出:“bacdfeg”
示例 2:
输入:s = “abcd”, k = 2
输出:“bacd”
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-string-ii
解答
这道题的大概意思就是每隔k个字符就对他后边的k个字符进行反转
对于示例1来说 k = 2
也就是说从第一个字符到第k个字符,即a–b进行反转,变为b–a
间隔k个位置,也就是2个位置,c 和 d
在对后面k个字符进行反转,即e—f,转变为f—e
所以输出的结果是’bacdfeg’
将字符串转化为一个字符串数组
char[] chars = s.toCharArray();
将第一个指针left定义在数组的第一个位置
int left = 0;
第二个指针right 通过比较left+k和len的大小,选择小的一个作为right所指向的位置
① 第一次
left = 0;
right = (0+2,7)-1 = 1

对left和right之间的数据进行前后交换
② 第二次
这次left所指的位置,是在当前left后面的2k的位置
left=0+22=4;
right= (4+2,7)-1=5;
进行数据的交换
③ 此时如果在进行for循环,那么此时left=4+2*2=8>len=7
所以循环结束
输出结果即可
代码
class Solution {
public String reverseStr(String s, int k) {
int len = s.length();//定义字符串的长度
//把字符串类型的转为一个char类型的字符串数组
char[] chars = s.toCharArray();
for(int left = 0;left<len;left = left+2*k){
jiaohuan(chars,left,Math.min(left+k,len)-1);
}
return new String(chars);
}
//数据进行交换
public void jiaohuan(char[] chars,int left,int right){
while(left<right){
char temp = chars[left];
chars[left] = chars[right];
chars[right] = temp;
left++;
right--;
}
}
}

边栏推荐
猜你喜欢

TCP和UDP的基本认识

从零开发一款相机APP, Day03: Camera 常用api和最新框架介绍

万字长文,揭秘华为数据治理体系!

基于对象的实时空间音频渲染丨Dev for Dev 专栏

Sentinel vs Hystrix 限流到底怎么选?(荣耀典藏版)

Gee engine modification UI interface graphic tutorial

开关电源-半桥LLC控制

Project Manager: Not bad!The SSO single sign-on code is written, and the sequence diagram is also drawn?

从KEIL仿真界面导出数据的技巧

轻松学Pytorch-Pytorch可视化
随机推荐
BGP联邦综合实验
1191. 家谱树
The 10,000-character long article reveals the secrets of Huawei's data governance system!
Vscode builds ESP32-C3 development environment
【kaggle】Spaceship Titanic - 预测哪些乘客被运送到另一个维度【CatBoost - 10%】
Leetcode65. 有效数字
从KEIL仿真界面导出数据的技巧
Gee engine modification UI interface graphic tutorial
线程池工作流程-图示
Sentinel vs Hystrix 限流到底怎么选?(荣耀典藏版)
如何监控海外服务器性能
用支持LaTex的Markdown语句编辑一个数学公式
zabbix一键部署脚本----亲测可用
C#实现线程管理类
即时通讯移动端开发之网络连接优化
[局域网劫持]如何搞懵蹭网的同学-详细过程
线程池面试汇总
[10:00 Open Class]: Application Exploration of Kuaishou GPU/FPGA/ASIC Heterogeneous Platform
浅谈如何在渗透测试中快速搞定webshell
十种实现延迟任务的方案