美文网首页
【教3妹学编程-算法题】消除相邻近似相等字符

【教3妹学编程-算法题】消除相邻近似相等字符

作者: 程序员小2 | 来源:发表于2023-12-13 07:59 被阅读0次
    瑟瑟发抖

    3妹:好冷啊, 冻得瑟瑟发抖啦
    2哥 : 又一波寒潮来袭, 外面风吹的呼呼的。
    3妹:今天还有雨,2哥上班记得带伞。
    2哥 : 好的
    3妹:哼,不喜欢冬天,也不喜欢下雨天,要是我会咒语,一直停留在春天就好啦,四季如春。
    2哥:想得美, 接受现实吧。四季如春不可能了,不过本周可以在一周内感受春夏秋冬。还有,再冷的天也别忘记刷题啊。
    3妹:好的,我要上班去了,你发我微信上,我通勤路上看一下~

    吃瓜

    题目:

    给你一个下标从 0 开始的字符串 word 。

    一次操作中,你可以选择 word 中任意一个下标 i ,将 word[i] 修改成任意一个小写英文字母。

    请你返回消除 word 中所有相邻 近似相等 字符的 最少 操作次数。

    两个字符 a 和 b 如果满足 a == b 或者 a 和 b 在字母表中是相邻的,那么我们称它们是 近似相等 字符。

    示例 1:

    输入:word = "aaaaa"
    输出:2
    解释:我们将 word 变为 "acaca" ,该字符串没有相邻近似相等字符。
    消除 word 中所有相邻近似相等字符最少需要 2 次操作。
    示例 2:

    输入:word = "abddez"
    输出:2
    解释:我们将 word 变为 "ybdoez" ,该字符串没有相邻近似相等字符。
    消除 word 中所有相邻近似相等字符最少需要 2 次操作。
    示例 3:

    输入:word = "zyxyxyz"
    输出:3
    解释:我们将 word 变为 "zaxaxaz" ,该字符串没有相邻近似相等字符。
    消除 word 中所有相邻近似相等字符最少需要 3 次操作

    提示:

    1 <= word.length <= 100
    word 只包含小写英文字母。

    思路:

    思考

    从左到右遍历 word,如果发现 word[i−1]和 word[i]近似相等,应当改 word[i−1]还是 word[i]?

    如果改 word[i−1],那么 word[i]和 word[i+1]是可能近似相等的,但如果改 word[i],就可以避免 word[i]和 word[i+1]近似相等。

    所以每次发现两个相邻字母近似相等,就改右边那个。

    java代码:

    public class Solution {
        public int removeAlmostEqualCharacters(String s) {
            int ans = 0;
            for (int i = 1; i < s.length(); i++) {
                if (Math.abs(s.charAt(i - 1) - s.charAt(i)) <= 1) {
                    ans++;
                    i++;
                }
            }
            return ans;
        }
    }
    

    相关文章

      网友评论

          本文标题:【教3妹学编程-算法题】消除相邻近似相等字符

          本文链接:https://www.haomeiwen.com/subject/kuqbgdtx.html