classSolution{ funcisAnagram(_s: String, _t: String) -> Bool { if s.count != t.count { returnfalse } // 都是小写字母,设定26个0 var arr = [Int](repeating: 0, count: 26) let aChar =Int("a".unicodeScalars.first!.value) for i in s.unicodeScalars { arr[Int(i.value) - aChar] +=1 } for j in t.unicodeScalars { arr[Int(j.value) - aChar] -=1 } //遇到第一个小于0的说明该字符在另一串中没有出现过 if arr.first(where: {$0<0 }) ==nil { returntrue } returnfalse } }
执行用时:4 ms, 在所有 Swift 提交中击败了97.63%的用户 内存消耗:7.1 MB, 在所有 Swift 提交中击败了70.26%的用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
classSolution { public: boolisAnagram(string s, string t){ if (s.length() != t.length()) returnfalse; int arr[26]={0}; for (int i = 0; i < s.length(); ++i) { arr[s[i]-'a']++; } for (int i = 0; i < t.length(); ++i) { arr[t[i]-'a']--; } for (int i = 0; i < 26; ++i) { if (arr[i] < 0) { returnfalse; } } returntrue; } };