leecode[242]有效的字母异位词 Python3实现(collections.Counter,哈希计数)

news/2024/7/23 10:17:31 标签: python, 哈希, 字符串
python"># 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 
# 
#  示例 1: 
# 
#  输入: s = "anagram", t = "nagaram"
# 输出: true
#  
# 
#  示例 2: 
# 
#  输入: s = "rat", t = "car"
# 输出: false 
# 
#  说明: 
# 你可以假设字符串只包含小写字母。 
# 
#  进阶: 
# 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况? 
#  Related Topics 排序 哈希
#  👍 306 👎 0


# leetcode submit region begin(Prohibit modification and deletion)
class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        if len(s)!=len(t):
            return False
        dict = {}
        for ch in s:
            if dict.get(ch):
                dict[ch] += 1
            else:
                dict[ch] = 1
        for ch in t:
            if dict.get(ch):
                if dict[ch]==0:
                    return False
                dict[ch] -= 1
            else:
                return False
        return True
# leetcode submit region end(Prohibit modification and deletion)

首先判断二者长度是否相同,如果不同直接False;
哈希表记录s的字母出现个数,验证t中字母是否出现相同个数。

其它解法

排序后相同则为异位词:

python">return sorted(s) == sorted(t)

Counter()结果相同则为异位词:

python">return collections.Counter(s) == collections.Counter(t) 

collections.Counter做了哈希计数工作,实例代码:

import collections
a = "abc"
print(collections.Counter(a))

# Counter({'a': 1, 'b': 1, 'c': 1})

http://www.niftyadmin.cn/n/905553.html

相关文章

python学习 (三十二) 异常处理

1 异常: def exceptionHandling():try:a 10b 0d a / bprint(d)except ZeroDivisionError as ex:print("exception 1 " str(ex) )except BaseException as ex:print("exception 2 " str(ex))exceptionHandling() 2 : else(如果没…

Centos7离线二进制安装Kafka(单节点测试)

官网下载kafka离线安装包,解压并重命名: $ tar zxvf kafka_2.11-2.0.0.tgz $ mv kafka_2.11-2.0.0/ kafka/ $ cd kafka修改配置,允许外部访问服务: $ vim config/server.properties# 添加以下配置,ip地址改为本机地址…

Python学习笔记:一手漂亮的Python函数

使用类和函数定义模型函数是抽象和封装的基本方法之一重构函数-- 命名合理-- 具有单一功能-- 包含文档注释-- 返回一个值-- 代码不超过 50 行-- 幂等函数,尽可能是纯函数PEP-8 定义了Python编程的风格指南PEP-257 定义文档注释函数太长 —— 代码重构 refactor幂等函…

centos7用miniconda搭建python flask环境

在windows环境下开发了python flask接口服务,为了方便在centos7环境下部署,尝试用linux版的miniconda搭建环境。 下载安装 Miniconda下载地址 本文下载了3.8版本: 安装: $ bash Miniconda3-latest-Linux-x86_64.sh看到如下信…

关于决策单调性优化动态规划

今天考场上突现决策单调性 原本对这个算法表示摒弃的本弱突然被打击了 于是来学习学习... 原理 我们只考虑$1D\;|\;1D$的动态规划... 同时,我们讨论这么一类$dp$:$f[i] min(f[j] w(j, i))(1 \leqslant j \leqslant i - 1)$ ($max$同理&…

leetcode[377]组合总和 Ⅳ (动态规划,完全背包)

# 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 # # 题目数据保证答案符合 32 位整数范围。 # # # # 示例 1: # # # 输入:nums [1,2,3], target …

MySQL5.6 Online DDL

MySQL5.6 Online DDL 简单介绍 ddl包含了copy和inplace方式,对于不支持online的ddl操作采用copy方式。对于copy方式,copy过程中全程锁表,不允许写(rename阶段会禁止读写),比如修改表字段的类型,…

leetcode [690]员工的重要性(BFS或DFS搜索,打工人五一快乐~)

# 给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id 。 # # 比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。那么员工 1 的数据结构是 [1, 15, # […