1. 判断素数
判断101到200之间有几个素数,并且将这些素数输出。
def isPrime(li):
for item in li:
i=2
while i*i <= item:
if item%i == 0:
li.remove(item) #说明不是素数
break
else:
i+=1
print('素数是:'%li)
print('一共有%d个素数'%len(li))
list1=list(range(101,201))
isPrime(list1)
14 .最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串
""
。
输入:strs = ["flower","flow","flight"] 输出:"fl" 输入:strs = ["dog","racecar","car"] 输出:""
纵向扫描:
def longestCommonPrefix(strs):
if len(strs)==0:
return ''
n=len(strs[0]) # 列表中第一个字符串的长度(横--j)
m=len(strs) # 列表中字符串个数(纵--i)
for i in range(0,n):
first_char=strs[0][i] # 第一个字符串的 第 j+1 个数字(位于第一行)
for j in range(1,m):
if len(strs[j])==j or first_char != strs[j][i]:
return strs[0][0:i]
return strs[0]
横向扫描:
def longestCommonPrefix(strs):
prefix=strs[0]
for i in range(1,len(strs)):
prefix=longestCommonPrefix2(prefix,strs[i])
if len(prefix)==0:
return ""
return prefix
def longestCommonPrefix2(str1,str2):
length=min(len(str1),len(str2))
index=0
while index<length and str1[index]=str2[index]:
index+=1
return str1[0:index]
(20).有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
def isValid(str1):
pairs={
')':'(',
'{':'}',
'[':']'
}
stack=list() #创建一个空栈
top_char=stack[-1] # top_char为栈顶的字符
for item in str1: # 碰到左括号
if item=='(' or item=='{' or item=='[':
stack.append(item)
else: # 碰到右括号
if not stack or top_char != pairs.get(item):
return False
stack.pop() # 右括号遇到匹配的左括号,将左括号从栈stack中删去
return not stack #遍历完后,如果stack为空,说明每个右括号有对应的左括号,字符串有效
# 或者:
for item in str1:
if item in pairs: # 右括号
if not stack or stack[-1] != pairs.get(item): # 栈为空 或者 栈顶的字符 不等于 右括号的对应字符
return False
stack.pop()
else: # 左括号
stack.append(item) #将出现的左括号加入栈列表中,后加入的位于栈顶stack[-1]
return not stack # 遍历完后,如果栈为空,返回True