华为编程题第一道Python

很遗憾自己调试了半天都出不来,对牛客的意见很大,不能够进行调试,只要不和答案相关也不能输出,这样哪一步错了也不清楚(小伙伴们,不知道你们的是不是也是这样?)
关于第一道编程题,做题的时候,检查了好几遍,估计还是逻辑有些问题,不过线下自己调试了一下,出来结果了,可惜交卷了,悲痛中😥
题目大意是这样:输入一个十进制的整数,然后把它变成二进制后,找出含有‘101’这种二进制的组合有多少个,如果有10101这种,就算两个,很好理解。
本人的代码是这样的:
#输入
a=input()
b = int(a)
#转化成二进制
c =bin(b)
num = 0#这个是统计有几个101的个数的
str_m =[]#这个是存二进制每一个位的整数的,后来发现这步可以省,没改
str_c =list(str(c).replace('0b',''))#字符串分割成数组
location = 0#定位第一个101所在的位置
num_location = 0#输出定位所在的整型位置
n = len(str_c)-1#这是为了计算二进制字符数组的长度的
#计算有多少个101
for i in range(0,len(str_c)-2):
    if (str_c[i]=='1')&(str_c[i+1]=='0')&(str_c[i+2]=='1'):
        num = num+1
#计算101出现的第一个位置,这里比较绕,所在的位置为1所在的起点
for i in range(0,len(str_c)-2):
    if(str_c[n-i]=='1')&(str_c[n-i-1]=='0')&(str_c[n-i-2]=='1'):
        location = i
        break
#把数组数据头尾转换,然后存到一个新数组
for i in range(0,n+1):
    str_m.append(int(str_c[n-i]))
#将101所在的位置二进制转换成十进制,比如11011,101第一个出现的位置就是3
for i in range(0,location+1):
    if str_m[i]==1:
        num_location = 2**i +num_location
#如果存在101就输出,不存在就输出0,-1,(输出格式是m,n,m-101个数,n-起始位置)
if num==0:
    print(0,-1)
else:
    print(num,num_location,location,str_c)

进行了调试:
77
1 1 
希望接下来自己为自己的努力多攒点人气,加油加油!

#华为##笔试题目##笔经#
全部评论
你三道都A了多少
点赞 回复 分享
发布于 2019-08-31 21:45
今天有笔试啊
点赞 回复 分享
发布于 2019-08-31 21:48
今年都不让线下调试了吗。。。
点赞 回复 分享
发布于 2019-08-31 21:51
痛苦+1 最后一分钟发现是从后往前 来不及了
点赞 回复 分享
发布于 2019-08-31 21:54
你试下负数,我的正数没问题,负数本地IDE上没问题,但不知道牛客为什么过不了
点赞 回复 分享
发布于 2019-08-31 21:57
华为笔试都是可以在本地调试的啊。。
点赞 回复 分享
发布于 2019-08-31 22:14
我也今晚做了这套卷子 太难了 第一题只AC了64 剩下的没做
点赞 回复 分享
发布于 2019-08-31 22:42
关键是从右往左的吧。。
点赞 回复 分享
发布于 2019-09-01 00:20
华为有笔试了?为啥我没收到
点赞 回复 分享
发布于 2019-09-01 00:23
点赞 回复 分享
发布于 2019-09-01 00:48
大哥可以参考下我这渣渣代码哈
点赞 回复 分享
发布于 2019-09-01 00:49
牛客上python编程的题怎么找不到呀,大家有链接没
点赞 回复 分享
发布于 2020-01-05 15:12
不是都用本地ide吗
点赞 回复 分享
发布于 2020-01-08 14:57

相关推荐

11-27 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
8
分享
牛客网
牛客企业服务