代码随想录算法训练营第八天

344. 反转字符串

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() 

541. 反转字符串 II

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))

151. 反转字符串中的单词

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 的一个切片,但这是不允许的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值