华为笔试(软件篇)2018/10/24

1.输入一个字符串,输出个数最多的字符以及个数。若有存在多个个数最多的字符,输出字符串中第一个出现的。

inputStr=input()
countList=[0]*26
for i in inputStr:
    countList[int(ord(i)-ord('a'))]=countList[int(ord(i)-ord('a'))]+1
maxCount=max(countList)
for i in inputStr:
    if countList[int(ord(i)-ord('a'))]==maxCount:
        print(i)
        break
print(maxCount)

2.输入n个字符串,每个字符串表示一个数据容量(30M,2G,1T),从小到大输出字符串。

import operator
n=int(input())
inputList=[]
for i in range(0,n):
    curInput=input()
    curNum=float(curInput[:len(curInput)-1])
    curChar=curInput[len(curInput)-1]
    if curChar=='M':
        inputList.append([curNum/1000,curInput])
    elif curChar=='T':
        inputList.append([curNum*1000,curInput])
    else:
        inputList.append([curNum,curInput])
inputList.sort(key=operator.itemgetter(0))
for i in inputList:
    print(i[1])

3.找宝藏的题目。输入(2,2),6,4。分别表示初始点,方向,步数。再输入一个二维9*9矩阵,判断在规定步数内是否能找到宝藏。

def _foo(x,y,d,n,eurekaX,eurekaY,mapArray):
    global keepD
    if keepD!=0:
        n=n-1
        if d==6:
            x=x+1
        elif d==4:
            x=x-1
        elif d==2:
            y=y+1
        elif d==8:
            y=y-1
        if mapArray[y][x]==1:
            n=n-3
        elif mapArray[y][x]==5:
            keepD=3
        elif mapArray[y][x]==9:
            x=eurekaX
            y=eurekaY
        keepD=keepD-1
        return x,y,d,n
    
    n=n-1
    if d==6:
        x=x+1
        
    elif d==4:
        x=x-1
        
    elif d==2:
        y=y+1
        
    elif d==8:
        y=y-1
    if mapArray[y][x] in [6,4,2,8]:
        d=mapArray[y][x]
    else:
        if mapArray[y][x]==1:
            d=d
            n=n-3
        elif mapArray[y][x]==5:
            d=d
            keepD=2
        elif mapArray[y][x]==9:
            x=eurekaX
            y=eurekaY
        else:
            d=d
        
    return x,y,d,n

inputStr=input().split(',')
[x,y,d,n]=[int(inputStr[0][1:]),int(inputStr[1][:len(inputStr[1])-1]),int(inputStr[2]),int(inputStr[3])]

mapArray=[]
eurekaX=-1
eurekaY=-1
keepD=0
for i in range(0,9):
    mapArray.append([int(x) for x in input().split(',')])
    if 9 in mapArray[-1]:
        eurekaX=i
        eurekaY=mapArray[-1].index(9)
        
flags=-1
while n>0:
    x,y,d,n=_foo(x,y,d,n,eurekaX,eurekaY,mapArray)
    if (x==eurekaX)&(y==eurekaY):
        flags=1
        break
    if (x>9)|(x<0)|(y<0)|(y>9):
        flags=-1
        break;
        
if (n<=0)&((x!=eurekaX)|(y!=eurekaY))&(flags!=1):
    flags=0

if flags==-1:
    print('roadlessness')
elif flags==0:
    print('nothing') 
else:
    print('eureka')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值