• 242. Valid Anagram


    Problem statement

    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.

    Solution one: hash table/array(AC)

    General idea:

    • if the size of two strings is not equal, return false;
    • Enumerate each element of two strings, put each element into hash table/array.
    • compare the hash table/array

    Time complexity is O(n), space complexity is O(n)

    hash table version

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

    array version

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

    Solution two: sort and compare

    • Sort two strings
    • compare whether they are equal

    Time complexity is O(nlgn), space complexity is O(1)

    class Solution {
    public:
        bool isAnagram(string s, string t) {
            sort(s.begin(), s.end());
            sort(t.begin(), t.end());
            return s == t;
        }
    };
  • 相关阅读:
    生成R文件
    android开发问题汇总
    雅虎股票接口
    Ext4.1 , #Ext4.2
    MSSQL手工注入 报错注入方法
    MSSQL 数据库复制脚本
    Go VS Code 调式常见问题处理
    Win10 VS2012 无法注册IIS4.0 解决方案
    VirtualBox 局域网独立主机设置
    如何用.reg文件操作注册表
  • 原文地址:https://www.cnblogs.com/wdw828/p/7068190.html
Copyright © 2020-2023  润新知