题目一:第一个出现两次的字母
解题思路:
本题可以利用python中集合的性质“无序不重复”,创建一个空集合a=set(),对字符串进行循环遍历,每次都将取出的字符与集合中的字符进行比较,判断是否已有相同的字符,且每次循环末尾都将取出的字符存入集合中。
AC代码:
a=set()
for i in s:
if i in a:
return i
a.add(i)
题目二:算数三元组的数目
解题思路:
本题有两种解法,1,直接三层循环暴力找出所有的算数三元组
2、利用数组或者哈希表,枚举nums中的每一个元素x,并判断x+diff和x+diff+diff在不在数组中
AC代码:
1、暴力
return sum(b - a == diff and c - b == diff for a, b, c in combinations(nums, 3))
Python itertools模块combinations(iterable, r)方法可以创建一个迭代器,返回iterable中所有长度为r的子序列,返回的子序列中的项按输入iterable中的顺序排序。
2、数组
1
vis = set(nums)
return sum(x + diff in vis and x + diff * 2 in vis for x in nums)
2
res=0
for num in nums:
if num+diff in nums and num+2*diff in nums:
res+=1
return res