牛客网面试试题

试题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)