class Solution:
##双指针
def reverseString(self, s: List[str]) -> None:
if s is None: return s
left = 0
right = len(s)-1
while left < right:
s[left],s[right] = s[right],s[left]
left+=1
right-=1
##切片反转
def reverseString1(self, s: List[str]) -> None:
s[:] = s[::-1]
##reverse函数
def reverseString2(self, s: List[str]) -> None:
s.reverse()
##栈:先进后出实现倒转
def reverseString3(self, s: List[str]) -> None:
stack = []
for i in s:
stack.append(i)
for i in range(len(s)):
s[i] = stack.pop()
class Solution:
def reverseStr(self, s: str, k: int) -> str:
p = 0
while p<len(s):
q = p+k
s = s[:p] + s[p:q][::-1] + s[q:]
##s = s[:p] + s[p:q:-1] + s[q:]
p = p+2*k
return s
54. 替换数字(第八期模拟笔试)
##ord函数计算Ascii码
str = input()
result = ''
for i in str:
if ord("0") <= ord(i) <= ord("9"):
result+="number"
else: result+=i
print(result)
##isdigit函数判断是否为数字
def changedigit(s):
result = ''
list1 = list(s)
for i in range(len(s)):
if list1[i].isdigit():
list1[i] = 'number'
return result.join(list1)
str = input()
print(changedigit(str))
class Solution:
##双指针
def reverseWords(self, s: str) -> str:
words= s.split()
left = 0
right = len(words)-1
while left < right:
words[left],words[right] = words[right],words[left]
left+=1
right-=1
return ' '.join(words)
##strip() 方法用于移除字符串开头和结尾的指定字符(默认为空格或换行符)
def reverseWords1(self, s: str) -> str:
words= s.strip()
words = words[::-1]
s = ' '.join(i[::-1] for i in words.split())
return s
55. 右旋字符串(第八期模拟笔试)
def reverseright(s,k):
list1 = list(s)
list2 = list1[len(list1)-k:]
list3 = list1[:len(list1)-k]
list2.extend(list3)
return ''.join(list2)
k = int(input())
str = input()
print(reverseright(str,k))
def reverseright(s,k):
s = s[::-1]
return s[:k][::-1]+s[k:][::-1]
k = int(input())
str = input()
print(reverseright(str,k))
错误示例:
s[:k] = s[:k][::-1]
s[k:] = s[k:][::-1]
字符串在 Python 中是不可变的(immutable),这意味着不能直接修改字符串中的一部分内容。执行 s[:k] = s[:k][::-1]
时,Python 尝试将 s[:k][::-1]
(这部分确实会创建一个新的字符串,它是原字符串前 k
个字符的反转)赋值给 s
的一个切片,但这是不允许的。