zoukankan      html  css  js  c++  java
  • [leetcode-242-Valid Anagram]

    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.

    思路:

    anagram有一个特点就是排序之后,字符串是相等的。

    bool isAnagram(string s, string t) 
    {
      if(s.size()!=t.size())return false;
      map<string,int>m;
      sort(s.begin(),s.end()); 
      sort(t.begin(),t.end());
      m[s]++;
      m[t]++;
       if(m.size()==2)return false;
       return true;  
    }

    还可以用hash

    bool isAnagram(string s, string t) {
            if (s.length() != t.length()) return false;
            int n = s.length();
            unordered_map<char, int> counts;
            for (int i = 0; i < n; i++) {
                counts[s[i]]++;
                counts[t[i]]--;
            }
            for (auto count : counts)
                if (count.second) return false;
            return true;
        }
    bool isAnagram(string s, string t) {
            if (s.length() != t.length()) return false;
            int n = s.length();
            int counts[26] = {0};
            for (int i = 0; i < n; i++) { 
                counts[s[i] - 'a']++;
                counts[t[i] - 'a']--;
            }
            for (int i = 0; i < 26; i++)
                if (counts[i]) return false;
            return true;
        }

    参考:

    https://discuss.leetcode.com/topic/20303/2-c-solutions-with-explanations

  • 相关阅读:
    硬件IC汇总
    stm8s103调试注意点
    感悟短句
    USB接口
    液晶屏驱动注意
    四数之和
    所有奇数长度子数组的和
    秋叶收藏集
    删除中间节点
    组合总和
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/6936627.html
Copyright © 2011-2022 走看看