ID | Title | Difficulty | |
---|---|---|---|
Loading... |
541. Reverse String II
Easy
LeetCode
Two Pointers, String
Problem
Given a string s and an integer k, reverse the first k characters for every 2k characters counting from the start of the string.
If there are fewer 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 leave the other as original.
Example 1:
Input: s = "abcdefg", k = 2
Output: "bacdfeg"
Example 2:
Input: s = "abcd", k = 2
Output: "bacd"
Code
class Solution {
public String reverseStr(String s, int k) {
char[] arr = s.toCharArray();
int len = s.length();
int i = 0;
while(i < len) {
int j = Math.min(i + k - 1, len - 1);
swap(arr, i, j);
i += 2 * k;
}
return String.valueOf(arr);
}
private void swap(char[] arr, int left, int right) {
while (left < right) {
char temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
}
按 <- 键看上一题!
540. Single Element in a Sorted Array
按 -> 键看下一题!
542. 01 Matrix