LeetCode-2273. 移除字母异位词后的结果数组

LeetCode-2273. 移除字母异位词后的结果数组,第1张

  • 给你一个下标从 0 开始的字符串 words ,其中 words[i] 由小写英文字符组成。
在一步 *** 作中,需要选出任一下标i,从words中删除words[i]。其中下标 i 需要同时满足下述两个条件:
  1. 0 < i < words.length
  2. words[i - 1] 和 words[i] 是 字母异位词 。
  • 只要可以选出满足条件的下标,就一直执行这个 *** 作。

  • 在执行所有 *** 作后,返回 words 。可以证明,按任意顺序为每步 *** 作选择下标都会得到相同的结果。

  • 字母异位词是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。例如,“dacb” 是 “abdc” 的一个字母异位词。

示例 1:

输入:words = [“abba”,“baba”,“bbaa”,“cd”,“cd”]
输出:[“abba”,“cd”]
解释:
获取结果数组的方法之一是执行下述步骤:
由于 words[2] = “bbaa” 和 words[1] = “baba” 是字母异位词,选择下标 2 并删除 words[2] 。
现在 words = [“abba”,“baba”,“cd”,“cd”] 。
由于 words[1] = “baba” 和 words[0] = “abba” 是字母异位词,选择下标 1 并删除 words[1] 。
现在 words = [“abba”,“cd”,“cd”] 。
由于 words[2] = “cd” 和 words[1] = “cd” 是字母异位词,选择下标 2 并删除 words[2] 。
现在 words = [“abba”,“cd”] 。
无法再执行任何 *** 作,所以 [“abba”,“cd”] 是最终答案。

示例 2:

输入:words = [“a”,“b”,“c”,“d”,“e”]
输出:[“a”,“b”,“c”,“d”,“e”]
解释:
words 中不存在互为字母异位词的两个相邻字符串,所以无需执行任何 *** 作。

提示:

1 <= words.length <= 100
1 <= words[i].length <= 10
words[i] 由小写英文字母组成

程序代码
class Solution:
    def removeAnagrams(self, words: List[str]) -> List[str]:
        i = 1
        while i < len(words):
            a = Counter(words[i])
            b = Counter(words[i-1])
            if a == b:
                words.pop(i)
            else:
                i += 1
        return words

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/942233.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-18
下一篇 2022-05-18

发表评论

登录后才能评论

评论列表(0条)

保存