classSolution{public:boolisAnagram(string s, string t){
unordered_map<char,int> a, b;for(auto c: s) a[c]++;for(auto c: t) b[c]++;return a == b;}};
classSolution{publicbooleanisAnagram(String s, String t){if(s.length()!= t.length()){returnfalse;}int[] table =newint[26];for(int i =0; i < s.length(); i++){
table[s.charAt(i)-'a']++;}for(int i =0; i < t.length(); i++){
table[t.charAt(i)-'a']--;if(table[t.charAt(i)-'a']<0){returnfalse;}}returntrue;}}
classSolution:defisAnagram(self, s:str, t:str)->bool:###用传统循环方法进行排序比较'''
if len(s) != len(t):
return False
s = list(s)
s.sort()
t = list(t)
t.sort()
for i in range(len(s)):
if s[i] == t[i]:
continue
else:
return False
return True
'''#remove方法在数组长度相等的情况下查看删除字符后是否全删完,这里用异常的方式ValueError 搜索列表中不存在'''if len(s) != len(t):
return False
s = list(s)
t = list(t)
for i in s:
try:
t.remove(i)
except ValueError as e:
return False
return True'''#用哈希索引的方法去比较建立字典iflen(s)!=len(t):returnFalse
words =[chr(i)for i inrange(97,123)]
value =[0]*26
wordDict_s =dict(zip(words,value))
wordDict_t =dict(zip(words,value))for word in s:
wordDict_s[word]+=1for word in t:
wordDict_t[word]+=1if wordDict_s == wordDict_t:returnTruereturnFalse
funcisAnagram(s, t string)bool{var c1, c2 [26]intfor_, ch :=range s {
c1[ch-'a']++}for_, ch :=range t {
c2[ch-'a']++}return c1 == c2
}
第二百五十七题:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/classSolution{public:
vector<string> ans;
vector<int> path;
vector<string>binaryTreePaths(TreeNode* root){if(root)dfs(root);return ans;}voiddfs(TreeNode* root){
path.push_back(root->val);if(!root->left &&!root->right){
string line =to_string(path[0]);for(int i =1; i < path.size(); i ++)
line +="->"+to_string(path[i]);
ans.push_back(line);}else{if(root->left)dfs(root->left);if(root->right)dfs(root->right);}
path.pop_back();}};
classSolution:defaddDigits(self, num:int)->int:if num ==0:return0if num %9==0:return9return num %9
funcaddDigits(num int)int{return(num-1)%9+1}
第二百六十题:
classSolution{public:intget(vector<int>& nums,int k,int t){int res =0;for(auto x: nums)if((x >> k &1)== t)
res ^= x;return res;}
vector<int>singleNumber(vector<int>& nums){int ab =0;for(auto x: nums) ab ^= x;int k =0;while((ab >> k &1)==0) k ++;return{get(nums, k,0),get(nums, k,1)};}};
from collections import Counter
classSolution:defsingleNumber(self, nums:int)-> List[int]:
hashmap = Counter(nums)return[x for x in hashmap if hashmap[x]==1]
funcsingleNumber(arr []int)[]int{var result []intif arr ==nil{return result
}
xor :=0// 计算数组中所有数字异或的结果for_, v :=range arr {
xor ^= v
}
position :=0for i := xor; i&1==0; i >>=1{
position++}// 异或的结果与所有第position位为1的数字异或// 结果一定是出现一次的两个数中的一个
tempXor := xor
for_, v :=range arr {if(uint(v)>>uint(position))&1==1{
xor ^= v
}}// 得到另外一个出现一次的数字return[]int{xor, xor ^ tempXor}}
第两百六十三题:
classSolution{public:boolisUgly(int num){if(num <=0)returnfalse;while(num %2==0) num /=2;while(num %3==0) num /=3;while(num %5==0) num /=5;return num ==1;}};
classSolution{publicbooleanisUgly(int num){//需要特判0if(num <1)returnfalse;while(num %2==0) num /=2;while(num %3==0) num /=3;while(num %5==0) num /=5;return num ==1;}}
classSolution:defisUgly(self, num:int)->bool:if num <=0:## 如果num非正,就不是丑数returnFalsewhileTrue:
last = num
ifnot num %2:## 如果2整除num,就除以2
num >>=1ifnot num %3:## 如果3整除num,就除以3
num //=3ifnot num %5:## 如果5整除num,就除以5
num //=5if num ==1:## 如果若干次操作后,num变成1,说明num的因数只有2、3、5,是丑数returnTrueif last == num:## 如果1轮操作后,num没变,说明num不是丑数returnFalse
funcisUgly(num int)bool{if num ==0{returnfalse}for num !=1{if num%2==0{
num /=2}elseif num%3==0{
num /=3}elseif num%5==0{
num /=5}else{returnfalse}}returntrue}
第二百六十四题:
classSolution{public:intnthUglyNumber(int n){
vector<int>q(1,1);for(int i =0, j =0, k =0; q.size()< n;){int t =min(q[i]*2,min(q[j]*3, q[k]*5));
q.push_back(t);if(q[i]*2== t) i ++;if(q[j]*3== t) j ++;if(q[k]*5== t) k ++;}return q.back();}};