leetcode 242. Valid Anagram 颠倒字符的字符串的有效性判定 + HashMap

来源:互联网 发布:protobuf c windows 编辑:程序博客网 时间:2024/06/05 15:02

Given two strings s and t, write a function to determine if t is an anagram of s.

For example,
s = “anagram”, t = “nagaram”, return true.
s = “rat”, t = “car”, return false.

Note:
You may assume the string contains only lowercase alphabets.

最简单直接的方法就是直接HashMap统计即可。

代码如下:

import java.util.HashMap;/* * 注意使用Map数据结构 * */public class Solution {    public boolean isAnagram(String s, String t)     {        if(s==null && t==null)            return true;        else if(s==null && t!=null || s!=null && t==null || s.length()!=t.length())            return false;        HashMap<Character, Integer> map1=new HashMap<>();        HashMap<Character, Integer> map2=new HashMap<>();        for(int i=0;i<s.length();i++)        {            if(map1.containsKey(s.charAt(i)))                map1.put(s.charAt(i), map1.get(s.charAt(i))+1);            else                map1.put(s.charAt(i), 0);            if(map2.containsKey(t.charAt(i)))                map2.put(t.charAt(i), map2.get(t.charAt(i))+1);            else                map2.put(t.charAt(i), 0);        }        return map1.equals(map2);    }}

下面是C++的做法,就是使用一个26大小的数组纪录每一个字母出现的频率,也可以直接使用map做记录然后比较

代码如下:

#include <iostream>#include <alogrithm>#include <set>#include <map>#include <vector>#include <stack>#include <queue>using namespace std;class Solution {public:    bool isAnagram(string s, string t)     {        vector<int> a(26,0);        for (char i : s)            a[i - 'a']++;        for (char i : t)        {            a[i - 'a']--;            if (a[i - 'a'] < 0)                return false;        }        for (int i : a)        {            if (i > 0)                return false;        }        return true;    }};
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 指甲缝扎流血了怎么办 中考考差了高中怎么办 骨折后我抽烟了怎么办 五年级科学考不好怎么办 考试连续考差了怎么办 客户说没考虑好怎么办 小孩生殖器痒经常用手抓怎么办 孩子在幼儿园生殖器官受伤怎么办? 被骗了3000块钱怎么办 小说 月经来了想体检怎么办 尿检的时候遇上月经期怎么办 消防兵改革那新兵怎么办 教师资格证体检有问题怎么办 检兵合格还在上学怎么办 运动后肌肉肿了怎么办 打架用力过猛肌肉疼痛怎么办 军检只要一项不合格怎么办 体检身高差一厘米怎么办 体检身高差两公分怎么办 体检身高差10厘米怎么办 孩子的爸爸总是打游戏怎么办 拉屎屁眼疼还有血怎么办 家里冼澡要等好多冷水怎么办 孕晚期小孩头大怎么办 报考警校体检不合格退回怎么办? 入职体检视力0.1怎么办 屁扒骨折疼要怎么办 宝宝发高烧怎么办能快速退烧 屁股上长了纹路怎么办 手机充电头歪了怎么办 屁股挠烂了化脓怎么办 手机充电那坏了怎么办 孩子在学校被老师冤枉怎么办 初中学校不好我该怎么办 天气太热屁股淹了怎么办 骑车骑的屁股疼怎么办 爬山时屁股摔紫青了怎么办 宝宝不肯脱裤子拉粑粑怎么办 国家对无地农民怎么办 生完孩子骨架变大怎么办 17岁长高很慢怎么办?