2020-4-16 第一次 难度:简单
核心要求:不使用额外的空间,原地修改数组,O(1)的空间复杂度
c++代码
法1:
#include<string>
#include<algorithm>
class Solution {
public:
void reverseString(vector<char>& s) {
reverse(s.begin(),s.end());
}
};
c++法2:
class Solution {
public:
void reverseString(vector<char>& s) {
int len = s.size();
for(int i=0;i<len/2;i++)
{
if(s[i]==s[len-1-i]) continue;
char temp =s[i];
s[i]=s[len-1-i];
s[len-1-i]=temp;
}
}
};
Python代码
双指针法:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
i,j = 0,len(s)-1
while i<j:
s[i],s[j]=s[j],s[i]
i+=1
j-=1
一步法:
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
s[:] = s[::-1]
递归+双指针法:
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
# double pointer and recursion
def recur_(s, i,j):
if i>=j:
return
else:
s[i],s[j] = s[j],s[i]
recur_(s,i+1,j-1)
recur_(s,0,len(s)-1)
python代码参考:反转字符串