LeetCode刷题(17)~有效的字母异位词

举报
海轰Pro 发表于 2021/08/05 22:41:25 2021/08/05
【摘要】 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 12 示例 2: 输入: s = "rat", t = "car" 输出: false 12 说明: 你可以假设字符串只包含小写字母。 解答 By 海轰 提交代码 c...

题目描述

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

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

  
 
  • 1
  • 2

示例 2:

输入: s = "rat", t = "car"
输出: false

  
 
  • 1
  • 2

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

解答 By 海轰

提交代码

class Solution {
public: bool isAnagram(string s, string t) {
unordered_map<char,int> a; for(int i=0;i<s.size();++i) ++a[s[i]]; for(int i=0;i<t.size();++i) { if(a.find(t[i])== a.end()) return false; --a[t[i]]; if(a[t[i]]==0) a.erase(t[i]); } return a.empty(); }
};

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

运行结果
在这里插入图片描述
思路
        对于第一个string字符串,依次压入哈希表,并统计其次数。然后对第二个string字符串进行遍历:首先查询是否存在,若不存在,则直接return false,反之就对应字符减一,减到为0时,在哈希表中删除这个字符。最后,判断哈希表是否为空,若为空,则return true,反正 false。

C++完整测试代码

#include <iostream>
#include <iterator>
#include <unordered_map>
using namespace std;
bool isAnagram(string s, string t)
{ unordered_map<char, int> a; for (int i = 0; i < s.size(); ++i) ++a[s[i]]; for (int i = 0; i < t.size(); ++i) { if (a.find(t[i]) == a.end()) return false; --a[t[i]]; if (a[t[i]] == 0) a.erase(t[i]); } return a.empty();
}

int main()
{ string a = "abab"; string b = "baba"; cout << isAnagram(a, b); return 0;
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

题目来源

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-anagram

文章来源: haihong.blog.csdn.net,作者:海轰Pro,版权归原作者所有,如需转载,请联系作者。

原文链接:haihong.blog.csdn.net/article/details/107818241

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。