Hyplus目录
Java
/**
* <a href="https://leetcode.cn/problems/reverse-string-ii/">Reverse String II</a>
* 双指针;字符串
*/
class Solution {
public String reverseStr(String s, int k) {
char[] arr = s.toCharArray();
for (int i = 0; i < s.length(); i += 2 * k) {
reverse(arr, i, Math.min(i + k, s.length()) - 1);
}
return new String(arr);
}
public void reverse(char[] arr, int l, int r) {
while (l < r) {
char temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
l++;
r--;
}
}
}
Go
func reverseStr(s string, k int) string {
t := []byte(s)
for i := 0; i < len(s); i += 2 * k {
sub := t[i:getMin(i+k, len(s))]
for j, n := 0, len(sub); j < n/2; j++ {
sub[j], sub[n-1-j] = sub[n-1-j], sub[j]
}
}
return string(t)
}
func getMin(a, b int) int {
if a < b {
return a
}
return b
}
JavaScript
var reverseStr = function (s, k) {
const n = s.length;
const arr = Array.from(s);
for (let i = 0; i < n; i += 2 * k) {
reverse(arr, i, Math.min(i + k, n) - 1);
}
return arr.join('');
};
const reverse = (arr, l, r) => {
while (l < r) {
const temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
l++;
r--;
}
}
PHP
class Solution {
/**
* @param String $s
* @param Integer $k
* @return String
*/
function reverseStr(string $s, int $k) {
$arr = str_split($s);
for ($i = 0; $i < strlen($s); $i += 2 * $k) {
$this->reverse($arr, $i, min($i + $k, strlen($s)) - 1);
}
return implode('', $arr);
}
function reverse(&$arr, $l, $r) {
while ($l < $r) {
$temp = $arr[$l];
$arr[$l] = $arr[$r];
$arr[$r] = $temp;
$l++;
$r--;
}
}
}