Q541 反转字符串 II
2024-10-22 05:06:28
给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。
示例:
输入: s = "abcdefg", k = 2
输出: "bacdfeg"
要求:
- 该字符串只包含小写的英文字母。
- 给定字符串的长度和 k 在[1, 10000]范围内。
class Solution {
public String reverseStr(String s, int k) {
if (s == null || s.length() <= 1)
return s;
char[] chs = s.toCharArray();
int i = 0;
while (i < chs.length) {
if (i + k - 1 < chs.length) {
reverseCharArray(chs, i, i + k - 1);
} else {
reverseCharArray(chs, i, chs.length - 1);
}
i += 2 * k;
}
return String.valueOf(chs);
}
private char[] reverseCharArray(char[] chs, int i, int j) {
if (chs == null || i >= j)
return chs;
while (i < j) {
chs[i] ^= chs[j];
chs[j] ^= chs[i];
chs[i++] ^= chs[j--];
}
return chs;
}
}
最新文章
- 从零开始学习Android(一)Android环境的搭建
- thinkphp加载第三方类库
- Android开发者必须掌握的知识技能清单
- oracle 分区表
- gitlab安装
- HBAO
- PHP 文件包含之文件路径截断(转)
- C#常用正则验证
- Fedora 19+ 启动顺序调整
- 远程调试weinre的使用
- 开源Dubbox
- canvas一周一练 -- canvas基础学习
- vue的一些坑(第一天)
- edittext基本用法总结.md
- POJ3621 Sightseeing Cows(最优比率环)
- Canvas 画布组件(官网翻译)
- Dynamics CRM2016 Web API之通过实体的primary key查询记录
- 2014新年福利,居然有人将Ext JS 4.1的文档翻译了
- JavaScript Array+String对象的常用方法
- C#工具:ASP.NET MVC单例模式(懒汉)实现文件上传