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

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
坚持不懈,越努力越幸运,大家一起学习鸭~~~

【教3妹学编程-算法题】消除相邻近似相等字符_第1张图片

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

【教3妹学编程-算法题】消除相邻近似相等字符_第2张图片

题目:

给你一个下标从 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 只包含小写英文字母。

思路:

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

从左到右遍历 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;
    }
}

你可能感兴趣的:(算法,c#,开发语言)