• Leetcode 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.

     1 #include<map>
     2 #include<string>
     3 #include<iterator>
     4 using namespace std;
     5 
     6 class Solution {
     7 public:
     8     bool isAnagram(string s, string t) {
     9         string temp1,temp2,temp3;
    10         int c1,c2;
    11         map<string,int> dictionary1,dictionary2;
    12         for(int i=0;i<s.length();i++) {
    13             temp1=s[i];
    14             ++dictionary1[temp1];}
    15         for(int j=0;j<t.length();j++) {
    16             temp2=t[j];
    17             ++dictionary2[temp2];}
    18             
    19         if(dictionary1.size()!=dictionary2.size()) return false;
    20         for(auto i=dictionary1.begin();i!=dictionary1.end();i++)
    21         {
    22             c1=(*i).second;
    23             temp3=(*i).first;
    24             c2=dictionary2[temp3];
    25             if(c1!=c2) return false;
    26         }
    27         return true;    
    28         
    29     }
    30 };

     看到一个更好的方法:(别人的)

    class Solution {
    public:
        bool isAnagram(string s, string t) {
            vector<int> count(26, 0);  //全部初始化为0
            for(int i = 0; i < s.size(); i ++)
                count[s[i]-'a'] ++;      //把a,b,c转换成下标了- - 不是什么二维,二维应该是vector<vector<int >>
            for(int i = 0; i < t.size(); i ++)
                count[t[i]-'a'] --;
            for(int i = 0; i < 26; i ++)
                if(count[i] != 0)
                    return false;
            return true;
        }
    };

     tips:

     string当然不一定要初始化。

     C++中没有直接判断map是否相等的函数;

     map中有iterator;

     map中的元素是pair,我们可以用first来取关键字,second来取值;

  • 相关阅读:
    CSS的四种基本选择器和四种高级选择器
    Leetcode 897 递增顺序查找树
    Leetcode 872 叶子相似的树
    Leetcode 700 二叉搜索树中的搜索
    Leetcode 二叉树中第二小的节点
    Leetcode 669 修剪二叉搜索树
    Leetcode 653 两数之和IV
    Leetcode 637二叉树的层平均值
    Leetcode 617 合并二叉树
    Leetcode 606 根据二叉树创建字符串
  • 原文地址:https://www.cnblogs.com/LUO77/p/4959663.html
Copyright © 2020-2023  润新知