华为笔试准备


华为高端AI算法岗位笔试准备

26进制求和

在这里插入图片描述

base = 'abcdefghijklmnopqrstuvwxyz'
a = input()    #z
b = input()    #bc
if len(a) < len(b):
    tmp = a
    a = b
    b = tmp
ret = ''
flag = 0
for i in range(1,len(b)+1):
    i = -1*i
    tmp = base.index(a[i]) + base.index(b[i]) + flag
    ret = base[tmp%26] + ret
    flag = int(tmp/26)
for i in range(len(b)+1, len(a)+1):
    i = -1 * i
    tmp = base.index(a[i]) + flag
    ret = base[tmp%26] + ret
    flag = int(tmp/26)
print(ret)    #cb

字符串查找

在这里插入图片描述

def finds2(str1, str2):
    for c in str2:
        if c not in str1:
            return 'false'
    return 'true'
s1 = input()
s2 = input()
print(finds2(s1,s2))

字符串解压缩

在这里插入图片描述

def strcmp(s1, s2):
    n = min(len(s1),len(s2))
    for i in range(n):
        if ord(s1[i]) < ord(s2[i]):
            return -1
        if ord(s1[i]) > ord(s2[i]):
            return 1
    if len(s1)==len(s2):
        return 0
    if len(s1)>len(s2):
        return 1
    else:
        return -1

#s = input()
s='a11b2bac3bad3abcd2'
lstr = []
lnum = []
i = 0
while i < len(s):
    cur = ''
    while i < len(s):
        if s[i] in '0123456789':
            break
        cur+=s[i]
        i+=1
    n = 0
    while i < len(s):
        if s[i] not in '0123456789':
            break
        n = n*10 + int(s[i])
        i+=1
    lnum.append(n)
    lstr.append([cur])
#sortidx = sorted(range(len(lnum)), lambda k:lnum[k])
ii = 0
ret = ''
while ii<len(lnum):
    minn = 10000000
    for i in range(len(lnum)):
        if lnum[i] != -1:
            if lnum[i] < minn:
                minn = lnum[i]
                minp = i
            elif lnum[i] == minn:
                if strcmp(lstr[i][0], lstr[minp][0])==-1:  #根据ASCII排序,lstr[i]小
                    minp = i
    ret = ret + lstr[minp][0]*lnum[minp]
    lnum[minp] = -1
    ii = ii+1
print(ret)  #abcdabcdbbbacbacbacbadbadbadaaaaaaaaaaa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值