• LeetCode 题解 | 242. 有效的字母异位词


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

    示例 1:

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

    示例 2:

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

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

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

    方法一:直接sort函数

    class Solution {
    public:
        bool isAnagram(string s, string t) {
            sort(s.begin(),s.end());
            sort(t.begin(),t.end());
            if(s==t)
                return true;
            else
                return false;
        }
    };
    

    方法二: map计数

    class Solution {
    public:
        bool isAnagram(string s, string t) {
            map<char,int>Map;
            if(s.size()!=t.size())
                return false;
            for(int i=0;i<s.size();++i){
                ++Map[s[i]];
                --Map[t[i]];
            }
            for(map<char,int>::iterator it=Map.begin();it!=Map.end();++it)
                if(it->second!=0)
                    return false;
            return true;
        }
    };
    

    方法三: 数组法(hash)

    class Solution {
    public:
        bool isAnagram(string s, string t) {
            int num[26]={0}; 
            if(s.length()!=t.length())
                return false;
            for(int i=0;s[i]!='';i++){
                num[s[i]-'a']++;
                num[t[i]-'a']--;
               
            }
            for(int i=0;i<26;i++)
                if(num[i]!=0)
                    return false;
            return true;
        }
    };
    
    //另一种写法
    bool isAnagram(char *s, char *t)
    {
    	int i, x[26] = { 0 }, y[26] = { 0 };
    	for (i = 0; s[i] != ''; i++)	x[s[i] - 'a']++;	//建立 s 的字符表 x
    	for (i = 0; t[i] != ''; i++)	y[t[i] - 'a']++;	//建立 t 的字符表 y
    	for (i = 0; i < 26; i++)							//比较两字符表是否相同
    		if (x[i] != y[i])	return false;
    	return true;										//种类、个数均相同
    }
    
    

    Ps:不知道为什么内存消耗总是比较大2333

  • 相关阅读:
    Angular vs. React vs. Vue
    探索Virtual DOM的前世今生
    GRPC 负载均衡
    揭秘!用标准Go语言能写脚本吗?
    grpc 连接 复用 在 Go 中发现竞态条件 (Race Conditions)
    读取网络包
    User Datagram Protocol
    注册表项 DeviceInstance
    gopacket 抓包 过滤器
    Mysql 通信协议抓包分析
  • 原文地址:https://www.cnblogs.com/RioTian/p/12401920.html
Copyright © 2020-2023  润新知