python字符串处理面试题_Python中常见的字符串小笔试题

1.获取实现两个字符串中最大的公共子串

思路:

1.比较两个字符串的长度

2.获取较短字符串的所有子串

3.使用__contains__函数进行比较

4.把子串当做键,子串长度作为值,存入字典,通过值,反过来取出所有这个长度的值,做到同样长度下多个值得情况

# coding=utf-8

str1 = "abcdef"str2= "efdrabcefghdef"max_str= ""min_str= ""list1=[]def list_str(max_str, min_str): #2.获取较短字符串的所有子串

count =0

n=len(min_str)while count

list1.append(min_str[count:i+ 1])

count+= 1

#3.判断较长字符串是否含有子串

defend():

dict1={}for i inlist1:if max_str.__contains__(i):

dict1[i]= len(i) #把值当做键,把长度作为值

value1=max(dict1.values())for key,value in dict1.items(): #通过遍历,找到所有这个长度的值

if value==value1:print(key)#1.首先判断两字符串长度

defstart(str1, str2):globalmax_str, min_str

max_str, min_str=str1, str2if len(max_str)

max_str, min_str=str2, str1

list_str(max_str, min_str)#2.获取子串

list_str(max_str, min_str)

end()#3,判断

if __name__ == '__main__':

start(str1, str2)#0.开始比较长度

2.给定几个字符串,输入一个字符,如果第一个字符相同,再输入第二个,同样情况,继续输入,直到找到唯一的字符串

思路

1.把给出的字符串放入一个列表中

2.输入字符,遍历列表,使用startswith()方法

3.将比较的结果进行判断

4.回调

#coding=utf-8

list1=[]

str1= "Mon"str2= "Mabc"str3= "Mongddd"list1.append(str1)

list1.append(str2)

list1.append(str3)

last= "" #存储最后要输出的字符串

count = 0 #用来标识是否有以输入字符开头的字符串

str_input = "" #存储输入的字符串

defcompare(input_str):globalcount, last

count=0for i inlist1:ifi.startswith(input_str):

count+= 1last=idefback():globalstr_inputif count == 1: #如果是1,说明只有1个字符串有,则输出

print(last)elif count >= 2: #如果没有,则继续输入,并且拼接上前面输入的字符串

input_str = input("请继续输入字母")

str_input= str_input +input_str

compare(str_input)#重新调用比较

back() #回调本身,进行验证

if __name__ == '__main__':

input_str= input("输入一个字母")

str_input=input_str

input_str= 'M'compare(input_str)#调用比较是否有哪个字符串以这个字符开头

back()

3.给定一个字符串,根据字符出现的频度排序,例如"abcc",排序后的结果为"ccba"或者"ccab"

思路

1.把所有字符串转换成列表

2.使用max(set(list1),key=list1.count)方法求出列表中出现频度最大的字符串

3.请求出现的次数,并在列表中移除这个元素

4.根据列表的长度进行回调

#coding=utf-8

str1 = "abcc"list1=list(str1)

last_str= "" #最终输出的字符串

def max_count_str(list_temp): #判断出现频度最大的字符串

return max(set(list_temp), key=list_temp.count)def count_judge(str_temp): #请求出现的频度,并在列表中去除这个元素

count =0whileTrue:if str_temp inlist1:

list1.remove(str_temp)

count+= 1

else:break

returncountdefstart():globallast_str

str_temp= max_count_str(list1) #请出出现频度最大的字符

count = count_judge(str_temp) #请求出现的频度,并在列表中去除这个元素

last_str = last_str + str_temp * count #进行字符串拼接

if len(list1) >0:

start()#如果列表中还有元素,回调,继续比较

if __name__ == '__main__':

start()print(last_str)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值