LeetCode之Reverse String II

简介: LeetCode之Reverse String II

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:


Input: s = "abcdefg", k = 2

Output: "bacdfeg"


Restrictions:

The string consists of lower English letters only.

Length of the given string and k will in the range [1, 10000]

2、代码实现

public class Solution {
    public  String reverse(String s) {
    if (s == null  || s.length() == 0) {
      return null;
    }
    char[] chars = s.toCharArray();
    int length = chars.length;
    int start = 0, end = length - 1;
    while (start < end) {
      char tmp = chars[start];
         chars[start++] = chars[end];
         chars[end--] = tmp;
    }
    String result = "";
    for (char c : chars) 
      result += c;
    return result;
  }
    public  String reverseStr(String s, int k) {
      if (null == s || s.length() == 0)
        return null;
      int length = s.length();
      int one = 1;
      int count = length % k == 0 ? length / k : length / k + 1;
      String result = "";
      for (int i = 1; i <= count; i++) {
        if (one % 2 == 1)
          result += reverse(s.substring(k * (i -1),  (k * i > length ? length : k * i)));
        else 
          result += s.substring(k * (i -1),  (k * i > length ? length : k * i));
        one++;
      }
        return result;
    }
}


3、总结

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

相关文章
|
11月前
|
算法 C++
【LeetCode】【C++】string OJ必刷题
【LeetCode】【C++】string OJ必刷题
56 0
CF1553B Reverse String(数学思维)
CF1553B Reverse String(数学思维)
39 0
|
6月前
|
机器学习/深度学习 canal NoSQL
从C语言到C++_12(string相关OJ题)(leetcode力扣)
从C语言到C++_12(string相关OJ题)(leetcode力扣)
48 0
|
6月前
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
6月前
|
Go 机器学习/深度学习 Rust
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
85 0
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
|
Java
Leetcode 467. Unique Substrings in Wraparound String
大概翻译下题意,有个无限长的字符串s,是由无数个「abcdefghijklmnopqrstuvwxy」组成的。现在给你一个字符串p,求多少个p的非重复子串在s中出现了?
46 0
|
算法 索引
【LeetCode】string 类的几道简单题
【LeetCode】string 类的几道简单题
【LeetCode】string 类的几道简单题
|
存储 C语言 C++
Leetcode17. 电话号码的字母组合:递归树深度遍历(C++vector和string的小练习)
Leetcode17. 电话号码的字母组合:递归树深度遍历(C++vector和string的小练习)
|
存储 canal 算法
leetcode:43. 字符串相乘(附加一些C++string其他小练习)
leetcode:43. 字符串相乘(附加一些C++string其他小练习)
|
机器学习/深度学习 NoSQL 算法
LeetCode 344. 反转字符串 Reverse String
LeetCode 344. 反转字符串 Reverse String