算法笔记: 力扣#541 反转字符串 ii

问题描述


解法


分析

Python 实现

1
2
3
4
5
6
7
8
9
10
11
class :
def reverseStr(self, s, k):
"""
:type s: str
:type k: int
:rtype: str
"""
lst = list(s)
for s in range(0, len(s), 2*k):
lst[s:s+k] = lst[s:s+k][::-1]
return "".join(lst)

Java 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class {
public String reverseStr(String s, int k) {
char[] lst = s.toCharArray();
for(int st = 0; st < lst.length; st += 2*k){
int i = st;
int j = (st+k-1 < lst.length) ? (st+k-1) : (lst.length-1);
while(i < j){
char temp = lst[j];
lst[j] = lst[i];
lst[i] = temp;
i++;
j--;
}
}
return new String(lst);
}
}

时间复杂度

O(n).

空间复杂度

O(n).

链接


541. Reverse String II
541. 反转字符串 II
(English version) Algorithm Notes: Leetcode#541 Reverse String II