题解
● 344.反转字符串
● 541. 反转字符串II
● 卡码网:54.替换数字
● 151.翻转字符串里的单词
题目链接:344. 反转字符串
方法一:
- 遍历字符串两两交换位置,类似冒泡排序
- 字符串太长会超时
方法二:
- 双指针
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
left = 0
right = len(s) - 1
while(left < right):
s[left],s[right] = s[right],s[left]
left += 1
right -= 1
return s
题目链接:541. 反转字符串 II
- 每2k个字符,将前k个字符进行反转
class Solution:
def reverseStr(self, s: str, k: int) -> str:
lens = len(s)
lists = list(s)
n = lens//(2*k)
m = lens%(2*k)
while(n+1):
left = n*k*2
right = left+k-1
if m >= 0 and m < k: #最后一段,不足k字符
right = left+m-1
m = -1
while(left<right):
lists[left],lists[right] = lists[right],lists[left]
left += 1
right -= 1
n -= 1
sn = ''
for key in lists:
sn += key
return sn
题目链接:54.替换数字
(卡码网题目)
题目描述
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。
输入描述
输入一个字符串 s,s 仅包含小写字母和数字字符。
输出描述
打印一个新的字符串,其中每个数字字符都被替换为了number
输入示例
a1b2c3
输出示例
anumberbnumbercnumber
题解
方法一:
- 字符串替换
s = input()
s = s.replace('0','number')
s = s.replace('1','number')
s = s.replace('2','number')
s = s.replace('3','number')
s = s.replace('4','number')
s = s.replace('5','number')
s = s.replace('6','number')
s = s.replace('7','number')
s = s.replace('8','number')
s = s.replace('9','number')
print(s)
方法二:
- 遍历,检测到数字时替换
def changenum(s):
sn = ''
for c in s:
if (ord(c) >= ord('0')) and (ord(c) <= ord('9')):
sn += 'number'
else:
sn += c
return sn
if __name__ == '__main__':
s = input()
sn = changenum(s)
print(sn)
题目链接:151. 反转字符串中的单词
- Python字符串不可变,需要将其转成列表
- 要用到额外空间
class Solution:
def reverseWords(self, s: str) -> str:
words = s.split()
left, right = 0, len(words) - 1
while left < right:
words[left], words[right] = words[right], words[left]
left += 1
right -= 1
return " ".join(words)