【力扣时间】【1576】【简单】替换所有的问号

本文详细解析了一道编程题目,涉及字符串处理。题目要求将字符串中的问号替换成小写字母,但条件是不能连续出现相同的字符。解决方案是遍历字符串,遇到问号时,选择不与前后字符相同的字母进行替换。此题旨在考察基本的字符串操作和条件判断能力。
摘要由CSDN通过智能技术生成

来了题简单的,简直是力扣对我的怜悯……

1、先看题

题目在此

其实,读完标题你就读完题目了。

是的,核心问题就是让你将给出的字符串中的所有的 ? 替换为小写的英文字母。
当然,有唯一一点限制,就是连续的字符不能相同

2、思路

由于题目保证了原本的字符串不会有重复,所以只要我们替换 ? 时,不将它替换为和前一个和后一个字符一样就可以了。

而具体替换为什么字母,题目不在意,我们也不用在意什么,就从最开头的 a 开始吧。

3、直接动手

class Solution {

    private static char QUESTION = '?';

    public String modifyString(String s) {
        StringBuilder sb = new StringBuilder(s);
        for (int i = 0; i < sb.length(); i++) {
            if (sb.charAt(i) == QUESTION) {
                char before = 0;
                char after = 0;
                //前一个没有越界时
                if (i - 1 >= 0) {
                    before = sb.charAt(i - 1);
                }
                //后一个没有越界时
                if (i + 1 < sb.length()) {
                    after = sb.charAt(i + 1);
                }

                char replace = 'a';
                //当要替换的字母和相邻字母一样时,替换为下一个英文字母
                while (replace == before || replace == after) {
                    replace++;
                }

                sb.setCharAt(i, replace);
            }
        }

        return sb.toString();
    }
}

4、解读

基本就是如此了,我们遍历字符串上的所有字符,判断其是否为 ?
如果是的话,就获取其前一个和后一个字符,注意超出字符范围的情况。
然后从字母 a 开始,与前后字符判断是否相同,如果有相同就+1,让它变为相邻的其他字母,直到出现不相同的情况即可。

5、提交

在这里插入图片描述

6、康康大牛

不愧是今天的题,应该玩不出什么花样了,就算是百花齐放的大牛们,也没有什么骚操作了。

总之今天则简单题中的简单题嘛,真的有人做不出来吗?

7、总结

感觉今天的题就是来给我这种被昨天的难题打击到的小白回回血的。
让你重拾一点信心,然后明天继续重拳出击。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值