Leetcode242. 有效的字母异位词
题目链接:242. 有效的字母异位词
C++:
" " 和 ' ' 的区别:" " 中的内容是字符串、' '中的内容是字符。
class Solution {
public:
bool isAnagram(string s, string t) {
int hashshuzu[26] = {0};
for(int i=0; i < s.size(); i++)
{
hashshuzu[s[i] - 'a']++;
}
for(int j=0; j < t.size(); j++)
{
hashshuzu[t[j] - 'a']--;
}
for(int k=0; k < 26; k++)
{
if(hashshuzu[k] != 0)
return 0;
}
return 1;
}
};
Python:
ord():python内置函数,用于返回字符的Unicode码
collections模块中的defaultdict:可以设置默认值的字典dict,defaultdict的第一个参数是一个可调用对象,它用于生成默认值,例如int, list, set等。
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
from collections import defaultdict
s_default = defaultdict(int)
t_default = defaultdict(int)
for x in s:
s_default[x] += 1
for y in t:
t_default[y] += 1
return s_default == t_default
collections模块中的Counter:Counter是一个简单的计数器,例如,统计字符出现的个数
(1)elements()方法:返回一个迭代器,可以通过 list 或者其它方法将迭代器中的元素输出,输出的结果为对应出现次数的元素
(2)most_common()方法:返回一个出现次数从大到小的前 n 个元素的列表
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
from collections import Counter
s_count = Counter(s)
t_count = Counter(t)
return s_count == t_count
Leetcode349. 两个数组的交集
题目链接:349. 两个数组的交集
C++:
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result_set;
unordered_set<int> nums1_set(nums1.begin(), nums1.end());
for(int num: nums2)
{
if(nums1_set.find(num) != nums1_set.end())
result_set.insert(num);
}
return vector<int>(result_set.begin(), result_set.end());
}
};
Python:
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
from collections import defaultdict
first = defaultdict(int)
second = defaultdict(int)
for x in nums1:
first[x] += 1
for y in nums2:
second[y] += 1
result = []
for i in first:
if second[i] > 0:
result.append(i)
return result
Leetcode202.快乐数
题目链接:202. 快乐数
C++:
如果sum陷入循环则永远不能变成1
class Solution {
public:
int getsum(int n){
int sum = 0;
//取出每个数字
while(n)
{
int a = n % 10;
sum += a*a;
n /= 10;
}
return sum;
}
bool isHappy(int n) {
unordered_set<int> happy;
while(1)
{
int sum = getsum(n);
if(sum == 1)
return true;
if(happy.find(sum) == happy.end())
{
happy.insert(sum);
n = sum;
}
else
return false;
}
}
};
Python:
class Solution:
def getsum(self, n):
sum = 0
while n:
a = n % 10
sum += a**2
n = n // 10
return sum
def isHappy(self, n: int) -> bool:
set = []
while True:
sum = self.getsum(n)
if sum == 1:
return True
if sum in set:
return False
else:
set.append(sum)
n = sum
Leetcode1.两数之和
题目链接:1. 两数之和
C++:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> map;
for(int i=0; i < nums.size(); i++)
{
int it = target - nums[i];
auto judge = map.find(it);
if(judge != map.end())
return {i, map[it]};
else
map.insert(pair<int, int>{nums[i], i});
}
return {};
}
};
Python:
enumerate():python内置函数,利用它可以同时获得索引和值,常用在遍历中
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
temp = set()
for i, v in enumerate(nums):
it = target - v
if it in temp:
return [i, nums.index(it)]
else:
temp.add(v)
return []