leetcode链接:
https://leetcode.cn/problems/reverse-string-ii/
题目分析

注意审题!!!
根据题目要求中的 每 计数至2K个字符得知,存在反转的字符串的位置为 0 - (k-1)、 2k - (3k-1)、 4k 到 (5k-1)。。。。
方案一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class Solution { public String reverseStr(String s, int k) { char[] sChar = s.toCharArray(); int n = sChar.length, left = 0;
do { if ((left + k) >= n) { func(sChar, left, n - 1); } else { func(sChar, left, left + k -1); } left = left + 2 * k; } while( left < n );
return new String(sChar); }
public void func(char[] s, int left, int right) { while (left < right) { char temp = s[left]; s[left] = s[right]; s[right] = temp;
left++; right--; } } }
|
结果
解答成功:
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:42.2 MB,击败了27.33% 的Java用户
分析
时间复杂度:
O( n )
空间复杂度:
O( )
方案二
较优方案