4.10晚华为笔试1和2

题目一

输入几个字符串,保证输出字符串长度为8,如abc 123456789,输出12345678 90000000 abc00000.
输入:2 abc 123456789
2表示输入两个字符串,abc和123456789表示两个输入的字符串

即abc字符串长度小于8,那么后面就要补0使其长度等于8,123456789长度为9,那么就要将其进行切分,12345678为一个输出字符串,9作为一个新的字符串,因为其长度为1,所以我们要在后面补0使其长度为8,最后,将所有的转换后字符串按照从小到大的顺序进行输出。

代码:
nums=[i for i in input().split(' ')]
length=int(nums.pop(0))
res=[]
for i in range(length):
    if not nums[i]:continue
    elif len(nums[i])<=8:
        res.extend([nums[i]+'0'*(8-len(nums[i]))])
    elif len(nums[i])>8:
        m=0
        while 8*(m+1)<len(nums[i]):
            res.append(nums[i][8*m:8*(m+1)])
            m+=1
        res.append(nums[i][8*m:]+'0'*(8*(m+1)-len(nums[i])))
res.sort()
print(' '.join(res))

题目二

题意:输入一个字符串,字符串中有大括号小括号中括号,且保证都是有效括号,即不存在(()这种情况,同时每一个括号内都有一个或多个字母,括号还可以相互嵌套,每个括号的前面都有一个数字,如3(AB),表示ABABAB,最后我们将这个字符串展开后逆序输出。
例:输入abc3(A) 输出AAAcba
输入abc3(3(A)2(B)) 输出BBAAABBAAABBAAAcba

思路:

我最开始把这道题想简单了,只想了单个括号,以及未嵌套的情况,所以当我测试许久发现想错了,头就有点蒙,以至于最后也没搞出来。
下面的代码是牛客上一位大佬的思路,我自己又写了下,这个代码巧妙的运用了栈!!还有他巧妙的利用了有效括号的特点(这个我自己编的时候也想到了,就是没想到用栈保存数字,以及逻辑没有弄明白#-#,还是需要多写算法题)。

代码:
#全部代码皆是基于有效括号编写的
strs=input()
res=''
number=[]
for i in strs:
    if i.isdigit():	#这是个判断是否是数字的函数
        number.append(i)	#这里保存数字
    elif i==')':
        tmp=''
        thisnumb=int(number.pop())	#利用栈
        j=-1
        while j>-len(res):
            if res[j]!='(':	#将括号排除
                tmp+=res[j]
                j-=1
            else:
                break
        res=res[:j]+thisnumb*tmp[::-1]#更新res
    elif i==']':
        tmp=''
        thisnumb=int(number.pop())
        j=-1
        while j>-len(res):
            if res[j]!='[':
                tmp+=res[j]
                j-=1
            else:
                break
        res=res[:j]+thisnumb*tmp[::-1]
    elif i=='}':
        tmp=''
        thisnumb=int(number.pop())
        j=-1
        while j>-len(res):
            if res[j]!='{':
                tmp+=res[j]
                j-=1
            else:
                break
        res=res[:j]+thisnumb*tmp[::-1]
    else:
        res+=i

print(res[::-1])

题目三

由于我一直想把第二题弄出来,第三题就没看,看很多热用dfs,因为我不太熟,所以等找人问下题目自己写下试试再更新。

猜你喜欢

转载自blog.csdn.net/weixin_43748296/article/details/89205575