当前位置:网站首页>leetcode刷题:字符串02( 反转字符串II)
leetcode刷题:字符串02( 反转字符串II)
2022-06-26 20:30:00 【涛涛英语学不进去】
541. 反转字符串II
给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例:
输入: s = “abcdefg”, k = 2
输出: “bacdfeg”
就是每2*k个为一组(这点很重要!),完整的组里,前k个反转,后k个不变。剩余部分不足一半,就是k,则全部反转加进去,如果比一半多,则那k个反转即可。
有两个特殊情况,就是一共不到一组。单独拎出来处理了。
package com.programmercarl.string;
/** * @ClassName ReverseStr * @Descriotion TODO * @Author nitaotao * @Date 2022/6/23 17:45 * @Version 1.0 * https://leetcode.cn/problems/reverse-string-ii/ * 541. 反转字符串 II **/
public class ReverseStr {
public static void main(String[] args) {
System.out.println(reverseStr("abcdefg", 3));
}
public static String reverseStr(String s, int k) {
//说白了就是每 [0,k-1] 反转 [k,2k-1]不变
// 轮转time次 45
int time = s.length() / (2 * k);
String result = "";
if (s.length() < k) {
result += reverseString(s.substring(0, s.length()).toCharArray());
return result;
}
if (s.length() <= 2 * k) {
result += reverseString(s.substring(0, k).toCharArray());
result += s.substring(k);
return result;
}
int index = 0;
while (index < time) {
result += reverseString(s.substring(index * 2 * k, index * 2 * k + k).toCharArray());
result += s.substring(index * 2 * k + k, index * 2 * k + 2 * k);
index++;
}
// 多于的部分
//如果剩余字符少于 k 个,则将剩余字符全部反转。
System.out.println(result);
if (s.length() - time * 2 * k < k) {
result += reverseString(s.substring(time * 2 * k).toCharArray());
} else {
//如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
result += reverseString(s.substring(time * 2 * k, time * 2 * k + k).toCharArray());
result += s.substring(time * 2 * k + k);
}
return result;
}
public static String reverseString(char[] s) {
//双指针法
int left = 0;
int right = s.length - 1;
while (left < right) {
char temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}
return String.valueOf(s);
}
}

边栏推荐
- Separate save file for debug symbols after strip
- 460million zongzi were sold in half a year. How big is the "imagination space" of time-honored brands?
- 30. 串联所有单词的子串
- The two files are merged into a third file.
- ImageView, glide load long picture (glide load picture)
- 开发者调查:Rust/PostgreSQL 最受喜爱,PHP 薪水偏低
- 威胁猎人必备的六个威胁追踪工具
- Sentinelresource annotation details
- 飞天+CIPU体为元宇宙带来更大想象空间
- Keep alive cache component in Vue
猜你喜欢

Gee: calculate the maximum and minimum values of pixels in the image area

MySQL - database creation and management

这些地区考研太疯狂!哪个地区报考人数最多?

【贝叶斯分类4】贝叶斯网

The relationship between the development of cloud computing technology and chip processor

C language 99 multiplication table

Three basic backup methods of mongodb

On the escape of inequality value

Minimum spanning tree, shortest path, topology sorting, critical path

抖音实战~搜索页面~扫描二维码
随机推荐
【贝叶斯分类2】朴素贝叶斯分类器
The goal you specified requires a project to execute but there is no POM
定长内存池
windows系统下怎么安装mysql8.0数据库?(图文教程)
论数据库的传统与未来之争之溯源溯本----AWS系列专栏
开户可以在网上开么?能安全吗?
Is it safe to open an online account in case of five-year exemption?
抖音实战~首页视频~下拉刷新
Tiktok practice ~ sharing module ~ short video download (save to photo album)
swagger:如何生成漂亮的静态文档说明页
Is there any risk in opening a mobile stock registration account? Is it safe?
IDEA 报错:Process terminated【已解决】
郭明錤:苹果 AR / MR 头显是其有史以来设计最复杂的产品,将于 2023 年 1 月发布
慕课11、微服务的用户认证与授权
【最详细】最新最全Redis面试大全(42道)
ImageView, glide load long picture (glide load picture)
手机股票注册开户有没有什么风险?安全吗?
c语言简单的登录
The two files are merged into a third file.
uni-app使用canvas绘制二维码