zoukankan      html  css  js  c++  java
  • Valid Anagram

    题目链接:https://leetcode.com/problems/valid-anagram/

    题目大意:就是判断两个字符串是否由相同的字符组成(字符个数也要相同)

    1)排序方法

    将字符串进行排序以后,如果想等,即可

    代码如下:

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

    2)hash方法

    先统计第一个字符串中各个字符出现的次数,然后再遍历第二个字符串,相同则hash表中的次数减1,最后判断hash表中是否所有字符出现次数均为0

    代码如下:

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

     也可以直接用数组来代替map,运行时间上会快一些,代码如下:

    class Solution {
    public:
        bool isAnagram(string s, string t) {
            vector<int> maps(26, 0);
    
            for(int i=0; i<s.size(); ++i)
            {
                maps[s[i]-'a']++;
            }
    
            for(int i=0; i<t.size(); ++i)
            {
                maps[t[i]-'a']--;
            }
    
            for(int i=0; i<26; ++i)
            {
                if(maps[i] != 0)
                {
                    return false;
                }
            }
            return true;
        }
    };
  • 相关阅读:
    cookie的路径
    cookie的生命
    cookie详解
    cookie简介&用途
    编码
    请求转发和重定向的区别
    request:域
    request:请求转发,请求包含
    常用的html语法
    request:获取请求的URL
  • 原文地址:https://www.cnblogs.com/shirley-ict/p/5597173.html
Copyright © 2011-2022 走看看