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

 

 
posted @ 2018-07-23 22:06  code_in_py  阅读(146)  评论(0编辑  收藏  举报