python_day_8:20180723
693. 交替位二进制数
给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。
思路:相邻两个数相减的绝对值判断是不是等于1
1 class Solution: 2 def hasAlternatingBits(self, n): 3 """ 4 :type n: int 5 :rtype: bool 6 """ 7 binnum=str(bin(n)).replace('0b','') 8 for i in range(len(binnum)-1): 9 if abs(int(binnum[i])-int(binnum[i+1]))!=1: 10 return False 11 return True
387. 字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1
思路:不难,但是思维陷阱很多,也体现出我思维不严谨,惭愧,基本上一直是按照测试反馈的提示在补漏洞。丢人了。
1 class Solution: 2 def firstUniqChar(self, s): 3 if len(s)==1: 4 return 0 5 if len(s)==0: 6 return -1 7 for i in range(len(s)-1): 8 if s[i] not in s[i+1:]: 9 if s[i] not in s[:i]: 10 return i 11 if s[-1] not in s[:-1]: 12 return len(s)-1 13 return -1
451. 根据字符出现频率排序
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
示例 1:
输入:
"tree"
输出:
"eert"
解释:
'e'出现两次,'r'和't'都只出现一次。
因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。
思路:这题关键是学习了字典的key排序方法
1 class Solution: 2 def frequencySort(self, s): 3 word=dict() 4 for i in range(len(s)): 5 if s[i] not in word.keys(): 6 word[s[i]]=s.count(s[i]) 7 a1 = sorted(word.items(),key = lambda x:x[1],reverse = True) 8 result='' 9 for i in a1: 10 result+=i[0]*i[1] 11 return result