传送门:力扣

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例 1:输入: s = "anagram", t = "nagaram"    输出: true
示例 2:输入: s = "rat", t = "car"   输出: false

用暴力枚举两层for循环的时间复杂度是O(n*n)

用哈希表的时间复杂度是O(1)

用哈希表来保存s字符串所有字符的出现次数,有点类似之前接触的桶排序思想。再进行t字符串所有字符的出现。操作是做两个for循环去分别循环s,t字符串。s字符串出现的所有字符hash保存自增,t字符串出现的所有字符在hash中进行自减操作,之后在单对hash表检索是否有元素不是0.

大开眼界的是string是用字符数组封装的,所以也可以直接使用  字符串名称.size()来获取字符串长度。非常方便。

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;class Solution {
public:bool isAnagram(string s, string t) {int record[26] = { 0 };for (int i = 0; i < s.size(); i++) {// 并不需要记住字符a的ASCII,只要求出一个相对数值就可以了record[s[i] - 'a']++;}for (int i = 0; i < t.size(); i++) {record[t[i] - 'a']--;}for (int i = 0; i < 26; i++) {if (record[i] != 0) {// record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。return false;}}// record数组所有元素都为零0,说明字符串s和t是字母异位词return true;}
};
int main() {Solution solution;cout << solution.isAnagram("anagram", "nagaram") << endl;cout << solution.isAnagram("cat", "mat") << endl;
}

Leetcode 242.有效的字母异位词(哈希表)相关推荐

  1. 127. Leetcode 242. 有效的字母异位词 (哈希表)

    class Solution:def isAnagram(self, s: str, t: str) -> bool:record = [0] * 26for i in range(len(s) ...

  2. LeetCode 242. 有效的字母异位词 (计数排序思想字符处理)

    242. 有效的字母异位词 题意: 任意给定两个单词字符串,判断这两个字符串是否是字母异位词 思路: 先判断字符串长度是否相等 将s字符串每个字母映射到数组中,在对应位置++ 将t字符串每个字母映射到 ...

  3. Java实现 LeetCode 242 有效的字母异位词

    242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = " ...

  4. LeetCode 242. 有效的字母异位词【哈希表】

    242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词. 示例 ...

  5. leetcode:242 : 有效的字母异位词

    题解: 我们可以用一个数组来统计字符串中各个字母出现的次数. 通过比较各自的统计数组的相同与否来判断是不是字母异位词 有题目可知道字母都是小写的,所以统计的数组大小为26即可. bool isAnag ...

  6. leetcode——242. 有效的字母异位词

    问题描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram& ...

  7. leetcode 242. 有效的字母异位词 思考分析

    题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 我们先考虑低阶版本,认为字符只有26种可能,然后将a ~ z的字符映射到数组的索引0 ~ 25,数组中存放的则是 ...

  8. leetcode 242. 有效的字母异位词

    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" ...

  9. 小白 LeetCode 242 有效的字母异位词

    字母异位词 字符串由相同字母组成,但允许排列顺序不同. 如"aaabbb" 与 "ababab" 是字母异位词, 而"aabb" 与 &qu ...

最新文章

  1. django基础(一)
  2. 在Ubuntu下FFmpeg编译,支持x264和x265(HECV)
  3. 可可肉的奋斗(第一天)2012-12-24
  4. SQL   PL/SQL   SQL*PLUS三者的区别
  5. Spring Boot和数据库初始化
  6. 机器学习者都应该知道的五种损失函数!
  7. Spring Boot 打成war包的方法
  8. 图解Http学习第一章
  9. ETL学习总结(1)——ETL 十大功能特性详解
  10. 学java需要学c语言吗?
  11. 视频动作检测最新发展调研(Action Detection)
  12. iPhone 的黄金时代已结束!
  13. java 二维数组动态添加,菜鸟求助: 二维数组如何实现动态接收?
  14. linux下DHCP服务器设置——让自己的智能手机上自己的wifi网络
  15. chromium 一些设置 --插件安装
  16. 18.企业应用架构模式 --- 基本模式
  17. 管道|符与xargs命令
  18. MFC 单文档、多文档和对话框
  19. android modbus 串口,手机Modbus 安卓Modbus调试软件
  20. Cherno OpenGL 教程

热门文章

  1. DLF +DDI 一站式数据湖构建与分析最佳实践
  2. Java Map中那些巧妙的设计
  3. 直播预告 | 企业CICD规模化落地
  4. Gartner 容器报告:阿里云与 AWS 并列第一,领先微软、谷歌
  5. 从遇见到信任 | Apache Dubbo 的毕业之旅
  6. 基于MaxCompute的数仓数据质量管理
  7. 阿里云不做SaaS、要练好内功被集成,发布SaaS加速器
  8. 一张图看懂阿里企业级分布式应用服务EDAS
  9. ​做安全操作系统,这位技术老兵是认真的!
  10. SDN精华问答 | SDN的核心技术是什么?