给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。

示例:

输入: s = "abcdefg", k = 2
输出: "bacdfeg"

要求:

  1. 该字符串只包含小写的英文字母。
  2. 给定字符串的长度和 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;
}
}

最新文章

  1. 从零开始学习Android(一)Android环境的搭建
  2. thinkphp加载第三方类库
  3. Android开发者必须掌握的知识技能清单
  4. oracle 分区表
  5. gitlab安装
  6. HBAO
  7. PHP 文件包含之文件路径截断(转)
  8. C#常用正则验证
  9. Fedora 19+ 启动顺序调整
  10. 远程调试weinre的使用
  11. 开源Dubbox
  12. canvas一周一练 -- canvas基础学习
  13. vue的一些坑(第一天)
  14. edittext基本用法总结.md
  15. POJ3621 Sightseeing Cows(最优比率环)
  16. Canvas 画布组件(官网翻译)
  17. Dynamics CRM2016 Web API之通过实体的primary key查询记录
  18. 2014新年福利,居然有人将Ext JS 4.1的文档翻译了
  19. JavaScript Array+String对象的常用方法
  20. C#工具:ASP.NET MVC单例模式(懒汉)实现文件上传

热门文章

  1. Luogu 4159 [SCOI2009]迷路
  2. php手机号正则
  3. 不用EL表达式---实现product页面显示
  4. 微信运动数据抓取(Python)
  5. wcf文件上传时碰到的配置问题
  6. Java高质量代码之 — 泛型与反射
  7. html5 video微信浏览器视频不能自动播放
  8. IDEA下载与安装
  9. 解决低版本Xcode不支持高版本iOS真机调试的问题
  10. 查看服务器的ip地址