牛客网面试试题
试题1:
s = input()
print(len(s.split()[-1]))
解析:这道题不难,主要的考点是split函数的用法,split函数主要用于字符串的切分,
split(" 切分字符",num),其中前一个参数为切分字符,后一个参数为切分次数。
如:
u ="www.doiido.com.cn"
print(u.split('.',1))
输出结果:['www', 'doiido.com.cn']
题目2:
解法1:
target_str=input()
str2=input()
j=0
for i in target_str:
if i.upper()== str2 or i.lower()==str2:
j=j+1
print(j)
解法2:
a=input().lower()
b=input().lower()
print(a.count(b))
解析:这道题的难度在于首先我们的字符串中含有数字、字符以及数字,而后面的匹配字符也应该包括这三个部分,所以我们只需要用后面的匹配字符去进行匹配就行了,但是其中有要求不区分大小写,所以我们在进行匹配时要采用upper、lower函数去转换匹配字符,这样的话,来跳过不区分大小写的要求。
题目3:
while True:
try:
#如果程序运行成功,即一开始输入的数字数量个数和后面的数字输入个数相同,则执行程序
n=int(input())
inputArray=[]
for i in range(n):
a=input()
inputArray.append(int(a))
uni_inputArray=sorted(set(inputArray))
for j in uni_inputArray:
print(j)
except:
#如果输入的数字数量,和后面的数字数量不匹配的话,则退出这个程序
break
解析:这个题的难点在于try和except,因为我们要考虑输入的数字数量和输入的数字个数不符的情况,我们就得将程序退出。
题目4:
错误解法:
自己编写的程序,可以看出程序中调用了很多的虚拟变量,其最后的结果为调用了太多的内存而不能通过测试。
str1=input()
str2=input()
n1=len(str1)
n2=len(str2)
list1=[str1,str2]
list2=[]
for i in list1:
while True:
a=i[:8]
b=i[8:]
if len(b) <= 8:#切分后的字符串不用再切分
if len(b)==0: #a的长度小于8
for i in range(8-len(a)):
a=a+str(0)
list2.append(a)
break
else:#a的长度为8个字符,b的长度小于8
list2.append(a)
for i in range(8-len(b)):
b=b+str(0)
list2.append(b)
break
else:
list2.append(a)
for i in list2:
print(i)
解法2:由于程序中并不需要将切分后的字符串保存,只用打印出来所以,我们不用刻意用list去保存数据,可以直接将字符串截取并打印替换,具体程序如下所示:
str1=input()
str2=input()
def cal_8(string):
n=len(string)
if n<=8:
print(string+"0"*(8-n))
else:
while len(string)>8:
#将字符串打印
print(string[:8])
#将打印后的字符串剔除
string=string[8:]
print(string+"0"*(8-len(string)))
cal_8(str1)
cal_8(str2)