Valid Anagram

原题: https://leetcode.com/problems/valid-anagram/description/

题意: 给定字符串s和t,编写函数判断t是否为s的anagram(字谜游戏,由颠倒字母顺序而构成的字[短语])。

例子: 

s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.

标签: anagram、valid、nagaram、字谜、rat、面试
猜你感兴趣的圈子:
LeetCode交流圈
  • Bingo
    2017-08-18 18:07:14 1楼#1层
    Python解法一:
    class Solution:
        # @param {string} s
        # @param {string} t
        # @return {boolean}
        def isAnagram(self, s, t):
            return sorted(s) == sorted(t)
  • Bingo
    2017-08-18 18:07:55 2楼#1层
    Python解法二:
    class Solution:
        # @param {string} s
        # @param {string} t
        # @return {boolean}
        def isAnagram(self, s, t):
            from collections import Counter
            return Counter(s).items() == Counter(t).items()
  • Bingo
    2017-08-18 18:08:38 3楼#1层
    C++解法一:
    class Solution {
    public:
        bool isAnagram(string s, string t) {
            sort(s.begin(), s.end());
            sort(t.begin(), t.end());
            return s == t;
        }
    };
  • Bingo
    2017-08-18 18:09:03 4楼#1层
    C++解法二:
    class Solution {
    public:
        bool isAnagram(string s, string t) {
            vector<int> count(26, 0);
            for(int i = 0; i < s.size(); i ++)
                count[s[i]-'a'] ++;
            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;
        }
    };
  • Bingo
    2017-08-18 18:09:35 5楼#1层
    Java解法一:
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) {
            return false;
        }
        char[] str1 = s.toCharArray();
        char[] str2 = t.toCharArray();
        Arrays.sort(str1);
        Arrays.sort(str2);
        return Arrays.equals(str1, str2);
    }
  • Bingo
    2017-08-18 18:10:01 6楼#1层
    Java解法二:
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) {
            return false;
        }
        int[] counter = new int[26];
        for (int i = 0; i < s.length(); i++) {
            counter[s.charAt(i) - 'a']++;
            counter[t.charAt(i) - 'a']--;
        }
        for (int count : counter) {
            if (count != 0) {
                return false;
            }
        }
        return true;
    }
  • 回复
隐藏