前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有效的字母异位词

有效的字母异位词

作者头像
xbhog
发布2019-10-22 17:18:55
4130
发布2019-10-22 17:18:55
举报
文章被收录于专栏:开发技能乱炖

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_43908900/article/details/102553385

题目:给定两个字符串 st ,编写一个函数来判断 t 是否是 s 的字母异位词(python语言)。

示例 1:

代码语言:javascript
复制
输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

代码语言:javascript
复制
输入: s = "rat", t = "car"
输出: false

说明: 你可以假设字符串只包含小写字母。

进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

下面看下面大神的操作:

首先说一下sorted/sort的用法:

基本排序,调用sorted()函数即可放回一个新的已排序列表,如果你不需要原列表亦可以使用list.sort()实现,他直接修改原列表,效率会比sorted()高。

代码语言:javascript
复制
sorted([5, 2, 3, 1, 4])   #[1, 2, 3, 4, 5]
a = [5, 2, 3, 1, 4]   #a.sort()  [1, 2, 3, 4, 5]

另外一个区别是, list.sort() 方法只是为列表定义的,而 sorted() 函数可以接受任何可迭代对象。

代码语言:javascript
复制
sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})  #[1, 2, 3, 4, 5]

题解1:

通过将 s 的字母重新排列成 t来生成变位词。因此,如果 T是 S的变位词,对两个字符串进行排序将产生两个相同的字符串。此外,如果 s 和 t的长度不同,t 不能是 s 的变位词,我们可以提前返回。

代码语言:javascript
复制
#排序
class Solution(object):
    def isAnagram(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        if len(s) != len(t):
            return False
        if sorted(s) != sorted(t):
            return False
        return True

题解2:

  • 为了检查 t 是否是 s 的重新排列,我们可以计算两个字符串中每个字母的出现次数并进行比较。因为 S 和 T 都只包含 A−Z 的字母,所以一个简单的 26 位计数器表就足够了。
  • 我们需要两个计数器数表进行比较吗?实际上不是,因为我们可以用一个计数器表计算 s 字母的频率,用 t 减少计数器表中的每个字母的计数器,然后检查计数器是否回到零。
代码语言:javascript
复制
#哈希
#标准字典包括setdefault方法()获取一个值,如果值不存在,建立一个默认。相比之下,defaultdict允许调用者在初始化时预先设置默认值。
class Solution(object):
    def isAnagram(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        if len(s) != len(t):
            return False
        dicts = collections.defaultdict(int)
        for i in range(len(s)):
            dicts[s[i]] = dicts[s[i]] + 1
            dicts[t[i]] = dicts[t[i]] - 1
        for val in dicts.values():
            if val != 0:
                return False
        return True

python学习网站----分享及成功:http://xbhog.cn 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-anagram

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先说一下sorted/sort的用法:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档