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.
题意:
给2个字符串,判断他们是否相等,只是顺序不一样(专业术语叫:变位词)。
思路:
很简单的一道题,方法有N多种,这里我使用一个大小为26的数组来解决(类似桶排序的思路),时间复杂度:O(n),空间复杂度:常数26。
C++:
1 class Solution { 2 public: 3 bool isAnagram(string s, string t) { 4 5 int len = s.size(); 6 if(len != t.size()) 7 return false; 8 9 int a[26]; 10 memset(a, 0, sizeof(a)); 11 12 for(int i = 0; i < len; i++) 13 { 14 a[s[i] - ‘a‘]++; 15 a[t[i] - ‘a‘]--; 16 } 17 18 for(int i = 0; i < 26; i++) 19 if(a[i] != 0) 20 return false; 21 22 return true; 23 } 24 };
时间: 2024-10-16 16:18:56