leetcode - 有效的字母异位词 - 初级算法

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

示例 1:

输入: s = “anagram”, t = “nagaram” 输出: true 示例 2:

输入: s = “rat”, t = “car” 输出: false
说明: 你可以假设字符串只包含小写字母。

好吧 接着上一篇的来 还是处理字符串
有了上一篇对 大佬的代码的学习 解决这个还不是手到擒来
当然 一开始 我想是用两 hashTable 最后 比较一下 每一位是否相等
但是呢
比较两个数是否相等 就可以转换成 判断两个数做差是否为零
所以可以
将 string s 中的每个字符 在数组hashTable中对应的值 ++
string t 中的每个字符 在数组hashTable中对应的值 –
最后 判断hashTable 是否每一位为 0
吼 上代码

class Solution {
public:
    bool isAnagram(string s, string t) {
        int hashTable[26] = {};
        if(s.size() != t.size())
            return false;
        for(int i = 0;i < s.size();i++){
            hashTable[(int)s[i] - 'a'] ++;
            hashTable[(int)t[i] - 'a'] --;
        }
        for(int i = 0;i < 26 ;i++){
            if(hashTable[i] != 0)
                return false;
        }
        return true;
    }
};

好 看一下大佬的结果

class Solution {
public:
    bool isAnagram(string s, string t) {
        int m=s.size();
        int n=t.size();
        int sm[26]={0};
        int tn[26]={0};
        int flag = 1;
        for(int i=0;i<m;i++)
        {
            sm[s[i]-97]=sm[s[i]-97]+1;
        }
        for(int j=0;j<n;j++)
        {
            tn[t[j]-97]=tn[t[j]-97]+1;
        }
        for (int l=0;l<26;l++)
        {
            if(sm[l]!=tn[l])
                flag=0;
        }
        if(flag)
        {return true;}
        else
        {return false;}
        
    }
};

这是LeetCode上给出运行时间为 0 ms 的 。。
感觉不知道为什么会是 0 ms 。。
有毒 。。

全部评论

相关推荐

03-11 10:06
已编辑
河南师范大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务