题目篇02

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值