LeetCode之Reverse String II

举报
chenyu 发表于 2021/07/27 00:36:31 2021/07/27
【摘要】 1、题目 Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, ...

1、题目

Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.

 

Example:


   
  1. Input: s = "abcdefg", k = 2
  2. Output: "bacdfeg"

 

Restrictions:
  1. The string consists of lower English letters only.
  2. Length of the given string and k will in the range [1, 10000]

 


2、代码实现


   
  1. public class Solution {
  2. public String reverse(String s) {
  3. if (s == null || s.length() == 0) {
  4. return null;
  5. }
  6. char[] chars = s.toCharArray();
  7. int length = chars.length;
  8. int start = 0, end = length - 1;
  9. while (start < end) {
  10. char tmp = chars[start];
  11. chars[start++] = chars[end];
  12. chars[end--] = tmp;
  13. }
  14. String result = "";
  15. for (char c : chars)
  16. result += c;
  17. return result;
  18. }
  19. public String reverseStr(String s, int k) {
  20. if (null == s || s.length() == 0)
  21. return null;
  22. int length = s.length();
  23. int one = 1;
  24. int count = length % k == 0 ? length / k : length / k + 1;
  25. String result = "";
  26. for (int i = 1; i <= count; i++) {
  27. if (one % 2 == 1)
  28. result += reverse(s.substring(k * (i -1), (k * i > length ? length : k * i)));
  29. else
  30. result += s.substring(k * (i -1), (k * i > length ? length : k * i));
  31. one++;
  32. }
  33. return result;
  34. }
  35. }

 
 


3、总结

先把问题化为一小步,分治的思想,比如我们先实现字符串的反转功能,然后再更具条件来实现,哪些子字符串需要反转

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/68238590

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。