class Solution(object):
def reverseString(self, s):
"""
:type s: List[str]
:rtype: None Do not return anything, modify s in-place instead.
"""
if len(s) == 1: return s
left, right = 0, len(s)-1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
return s
犯的错误:
class Solution(object):
def reverseStr(self, s, k):
"""
:type s: str
:type k: int
:rtype: str
"""
s = list(s)
def reverse_str(t):
left, right = 0, len(t)-1
while left < right:
t[left], t[right] = t[right], t[left]
left += 1
right -=1
return t
left = 0
right = 2*k - 1
while right < len(s):
t = reverse_str(s[left:left+k])
s = s[0:left] + t + s[left+k:]
left = right + 1
right += 2*k
if len(s) - 1 - left + 1 < k:
s = s[:left] + reverse_str(s[left:])
if k <= len(s) - 1 - left + 1 < 2*k:
s = s[:left] + reverse_str(s[left:left+k]) + s[left+k:]
return ''.join(s)
#改进
class Solution(object):
def reverseStr(self, s, k):
"""
:type s: str
:type k: int
:rtype: str
"""
def reverse_str(t):
left, right = 0, len(t)-1
while left < right:
t[left], t[right] = t[right], t[left]
left += 1
right -=1
return t
s = list(s)
for i in range(0, len(s), 2*k):
s[i:i+k] = reverse_str(s[i:i+k])
return ''.join(s)
class Solution(object):
def replaceSpace(self, s):
"""
:type s: str
:rtype: str
"""
s = s.split(' ')
print(s)
return '%20'.join(s)
class Solution(object):
def replaceSpace(self, s):
"""
:type s: str
:rtype: str
"""
cnt = s.count(' ')
res = [' '] * (len(s) + cnt*2)
# res = list(s)
# res.extend([' '] * cnt * 2)
pointer1, pointer2 = len(s) - 1, len(res) - 1
while pointer1 >= 0:
if s[pointer1] == " ":
res[pointer2-2:pointer2+1] = '%20'
pointer2 -= 3
else:
res[pointer2] = s[pointer1]
pointer2 -= 1
pointer1 -= 1
return ''.join(res)
class Solution(object):
def reverseLeftWords(self, s, n):
"""
:type s: str
:type n: int
:rtype: str
"""
return s[n:] + s[:n]
class Solution(object):
def reverseLeftWords(self, s, n):
"""
:type s: str
:type n: int
:rtype: str
"""
s = list(s)
s[0:n] = list(reversed(s[0:n]))
s[n:] = list(reversed(s[n:]))
s.reverse()
return "".join(s)
class Solution(object):
def reverseLeftWords(self, s, n):
"""
:type s: str
:type n: int
:rtype: str
"""
new_str = ''
for i in range(len(s)):
j = (i + n) % len(s)
new_str += s[j]
return new_str
class Solution(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
def strip_space(t):
n = len(t) - 1
left, right = 0, n
# 去除两边空格
# t.strip()
while left <= right and t[right] == ' ':
right -= 1
while left <= right and t[left] == ' ':
left += 1
tmp = []
# 去除单词之间多余的空格
while left <= right:
if t[left] != ' ':
tmp.append(t[left])
elif t[left] == ' ' and tmp[-1] != ' ':
tmp.append(t[left])
left += 1
return tmp
def reverse_string(nums, left, right):
while left < right:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
def reverse_word(t):
start, end = 0, 0
n = len(t)
while start < n:
while end < n and t[end] != ' ':
end += 1
reverse_string(t, start, end-1)
start = end + 1
end += 1
res = strip_space(list(s))
reverse_string(res, 0, len(res) - 1)
reverse_word(res)
return ''.join(res)