344.反转字符串
这题不难,用双指针
class Solution(object):
def reverseString(self, s):
l = 0
r = len(s)-1
while l < r:
temp = s[l]
s[l] = s[r]
s[r] = temp
l += 1
r -= 1
return s
python中也可以这样写
class Solution(object):
def reverseString(self, s):
l = 0
r = len(s)-1
while l < r:
s[l], s[r] = s[r], s[l]
l += 1
r -= 1
return s
541. 反转字符串II
这题写的时间有点长,因为一开始题目意思理解错了,没看到是每2k个就要反转其中的前k个,
要将步长设为2k
class Solution(object):
def reverseStr(self, s, k):
def func(lst):
l = 0
r = len(lst)-1
while l < r:
lst[l], lst[r] = lst[r], lst[l]
l += 1
r -= 1
return lst
lst = list(s)
for i in range(0, len(lst), 2*k):
lst[i:i+k] = func(lst[i:i+k])
return ''.join(lst)
注意1.字符串是不可变对象,不能直接操作,要先转为列表
2.字符串、列表切片就算下界超了也可以返回至最后一个,如:对[1,2,3,4]取[1:99],返回[2,3,4]
利用这一特性,可以减少对剩余字符的讨论
卡码网:54.替换数字
s = input()
res = ''
for i in s:
if ord('0') <= ord(i) <= ord('9'):
res += 'number'
else:
res += i
print(res)
151.翻转字符串里的单词
先要把所有多余的空格都删去,用split就可以将字符串转化为列表,列表中的元素就是所有的单词
还有一个快慢指针去空格的方法等周末再研究
class Solution(object):
def reverseWords(self, s):
s1 = s.split()
lst = s1[::-1]
return ' '.join(lst)
卡码网:55.右旋转字符串
先全部倒过来,再将其分为两部分
当然这题也可以初始化一个新的字符串,并将字母按正确顺序添加
k = int(input())
s = list(input())
reverse_s = s[::-1]
reverse_s[0:k] = reverse_s[0:k][::-1]
reverse_s[k:] = reverse_s[k:][::-1]
print(''.join(reverse_s))