541. Reverse String II

来源:互联网 发布:同步推苹果助手mac 编辑:程序博客网 时间:2024/04/30 11:15
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 = 2Output: "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]

Subscribe to see which companies asked this question.


Solution:

Tips:

Just reverse the code by group, and deal the last words less than k specifically.


Java Code:

public class Solution {    public String reverseStr(String s, int k) {        if (s == null || k < 2) {            return s;        }                StringBuilder result = new StringBuilder();        int i = 0;        int kCount = 0;                while (i < s.length()) {            int n = k;            int beginIdx = kCount % 2 == 0 ? i + k - 1 : i;            int step = kCount % 2 == 0 ? -1 : 1;            if (i + k > s.length()) {                break;            }            kCount++;            i += k;            while (n-- > 0) {                result.append(s.charAt(beginIdx));                beginIdx += step;            }        }        StringBuilder tailStr = new StringBuilder(s.substring(i, s.length()));        if (kCount % 2 == 0) {            result.append(tailStr.reverse());        } else {            result.append(tailStr);        }                return new String(result);    }}


0 0
原创粉丝点击