丑数
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
# -*- coding:utf-8 -*-
class Solution:
def GetUglyNumber_Solution(self, index):
# write code here
# 丑数可以表示为2^i*3^j*4^k的形式
if not index:
return 0
flag2=flag3=flag5=0
result=[1]
for i in range(1,index):
# 注意2*3和3*2会重复,所以要写成if而非elif
min_value=min(result[flag2]*2,result[flag3]*3,result[flag5]*5)
result.append(min_value)
if min_value==result[flag2]*2:
flag2+=1
if min_value==result[flag3]*3:
flag3+=1
if min_value==result[flag5]*5:
flag5+=1
return result[index-1]
第一个只出现一次的字符
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)
# -*- coding:utf-8 -*-
class Solution:
def FirstNotRepeatingChar(self, s):
# write code here
# python内置函数解法:
if not s:
return -1
reschar=list(filter(lambda char:s.count(char)==1,s))[0]
return s.index(reschar)
# 哈希表解法:由于ASCII码字节长度为1,占8位,故共有256中可能
asc_list=[0]*256
for char in s:
# ord()可将字符转换为ASCII码
asc_list[ord(char)]+=1
for char in s:
if asc_list[ord(char)]==1:
return s.index(char)
break