代码随想录算法训练营第8天|344. 反转字符串 541.反转字符串Ⅱ 54.替换数字
344.反转字符串
学习文档:卡哥讲解
题目简介
编写一个函数,将输入的字符串反转过来,不分配额外的空间,只能原地修改数组。
1.双指针法
定义两个指针一个指向开始,一个指向最后。将start和end指针进行互相调换。随后将指针往前移动。
#定义两个指针
start = 0
end = len(s)-1
while start < end:
s[start],s[end] = s[end],s[start]
end -= 1
start += 1
541.反转字符串Ⅱ
学习文档:卡哥讲解
题目简介
给定字符串s和整数k,要求将每2k个字符的前K个字符进行反转,其余字符串保持原样。
当s<k时,直接全部反转。反之当s>k的时候,反转前K个,剩余保持原样。
思路1
反转可以使用344.反转字符串给定的函数。关键是找出给定区间的起点。
def reverse_substring(text):
left, right = 0, len(text) - 1
while left < right:
text[left], text[right] = text[right], text[left]
left += 1
right -= 1
return text
res = list(s)
for cur in range(0, len(s), 2 * k):
res[cur: cur + k] = reverse_substring(res[cur: cur + k])
return ''.join(res)
541.反转字符串Ⅱ
学习文档:卡哥讲解
题目简介
给定一个字符串s,包含小写字母和数字字符,将字符串中的字母替换为‘number’字符串。
思路1
可以使用Python中的digit函数来识别数字。然后将其替换
class Solution:
def change(self, s):
lst = list(s)
for i in range(len(lst)):
if lst[i].isdigit():
lst[i] = "number"
return ''.join(lst)
Python里面的string也是不可改的,所以也是需要额外空间的。空间复杂度:O(n)。