力扣每日一题(二十六——替换所有的问号)

这篇博客记录了作者在LeetCode上遇到的一道字符串处理问题。题目要求在给定的字符串中,将问号'?'替换为不重复的字母。作者通过遍历字符串,根据'?'的位置来选择合适的字母替换,并避免与相邻字母重复。代码实现中,作者创建了一个包含所有字母的数组,并针对'?'可能出现的不同位置进行了讨论和处理。博客详细阐述了解题思路和代码实现,适合对字符串操作和算法感兴趣的读者阅读。
摘要由CSDN通过智能技术生成

仅以此纪录每日LeetCode所刷题目。

题目描述:

示例:

  

思路:

这道题我首先把26个字母放在数组中,虽然题目中说可以随意替换,但是我们还是按照顺序比较好。我们对题目中给定的字符串s进行遍历,遇到"?"就使用字母替换,注意字母不能和前后相邻的字母重复,因此我们讨论一下"?"所在的位置:若出现在开头,则避开第二个字符即可;若出现在结尾,则避开倒数第二个字符即可;若出现在中间,则需要避开前一个字符和后一个字符。最后排除一下特殊情况,那就是字符串中只有"?",出现这种情况我们返回a即可。

代码:

class Solution:
    def modifyString(self, s: str) -> str:
        if s == '?':
            return 'a'
        list1 = ['a','b','c','d','e',
                 'f','g','h','i','j',
                 'k','l','m','n','o',
                 'p','q','r','s','t',
                 'u','v','w','x','y',
                 'z']
        for i in range(len(s)):
            if s[i] == '?':
                if i == 0:
                    for j in range(len(list1)):
                        if list1[j] != s[1]:
                            s = s.replace('?',str(list1[j]),1)
                            break
                if i == len(s)-1:
                    for j in range(len(list1)):
                        if list1[j] != s[-2]:
                            s = s.replace('?',str(list1[j]),1)
                            break
                if 0<i<len(s)-1:
                    for j in range(len(list1)):
                        if list1[j] != s[i-1] and list1[j] != s[i+1]:
                            s = s.replace('?',str(list1[j]),1)
                            break
        return s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值