242. Valid Anagram(python+cpp)
阿新 • • 發佈:2018-12-15
題目:
Given two strings s and t , write a function to determine if t is an anagram of s. Example 1:
Input: s = "anagram", t = "nagaram" Output: true
Example 2:
Input: s = "rat", t = "car" Output: false Note: You may assume the string contains only lowercase alphabets.
Follow up: What if the inputs contain unicode characters? How would you adapt your solution to such case?
解釋: 判斷t是否是s的一種排列。 解法1:
from collections import Counter
class Solution:
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
return Counter(s)==Counter(t)
解法2,速度較慢: python程式碼:
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
return sorted(s)==sorted(t)
c++程式碼:
class Solution {
public:
bool isAnagram(string s, string t) {
sort(s.begin(),s.end());
sort(t.begin(),t.end());
return s==t;
}
};
解法3: python程式碼:
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
if len(s)!=len(t):
return False
letters='qwertyuiopasdfghjklzxcvbnm'
for l in letters:
if s.count(l)!=t.count(l):
return False
return True
c++程式碼:
class Solution {
public:
bool isAnagram(string s, string t) {
string line="qwertyuiopppasdfghjklzxcvbnm";
for(auto letter:line)
{
if (count(s.begin(),s.end(),letter)!=count(t.begin(),t.end(),letter))
return false;
}
return true;
}
};
總結:
這種排列的題目有好幾種套路,sort()
,count()
都是常見的。