设为首页 收藏本站
查看: 1266|回复: 0

[经验分享] 【Python】:用python做下百度2014笔试题

[复制链接]

尚未签到

发表于 2015-4-26 11:35:16 | 显示全部楼层 |阅读模式
         国庆节最后一天,明天就要上班了,闲来无事做做百度2014笔试题,好久没用过C++了,索性就用python简单的写一下,体验下题目难度。题目是从【大卫David】那里copy过来的。
  1、给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数。(15分)
  2、长度为N(N很大)的字符串,求这个字符串里的最长回文子串。(15分)
  3、数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。(15分)
  流程都是A介绍思路,B贴出代码,代码写的也不是很漂亮,凑凑活活贴下
  一:
  A.获取输入base的位数,然后分为两种情况,情况1是在该位数下寻找所需要的最小不重复数,情况2是在比该位数+1的位数下找最小不重复数
  情况2比较简单,就是1010...的罗列,一直到满足位数要求,情况1也就是从base+1开始挨个判断。。。感觉就这么简单,没有想什么高深的算法,
  如果理解错了同志们轻拍。。
  B.代码


DSC0000.gif DSC0001.gif


  1 #!/bin/env/python
2 # -*- encoding:utf-8 -*-
3 #Filename: 1.py
4
5 import sys
6
7 def Get_base_out(num, length):
8     '''Get_base_out method'''
9     for i in range(int(num)+1, 10**length):
10         result = Judge(i, length)
11         if result == True:
12             return i
13     return -1
14
15
16 def Get_base1_out(num, length):
17     '''Get_base1_out method'''
18     no_repeated_num = str(1)
19     for i in range(0,length):
20         if i % 2 == 0:
21             no_repeated_num += '0'
22         else:
23             no_repeated_num += '1'
24     return no_repeated_num
25
26
27 def Judge(suspect, length):
28     ''' Judge method'''
29     temp = str(suspect)
30     for i in range(0,length-1):
31         if temp == temp[i+1]:
32             return False
33     return True
34
35
36 if __name__ == "__main__":
37     for line in sys.stdin:
38         base = line.strip()
39         length = len(base)
40         court = Get_base_out(base, length)
41         if court == -1:
42             court = Get_base1_out(base, length)
43         print court
View Code  二:
  A.既然找东西,肯定都遍历一遍喽,那只有想办法在一遍遍历中就完成任务,计划用两个变量分别存储回文自串的位置和回文字串的长度。从头到尾遍历
  判断下就完事。
  B.代码:
  注:没写123321这种类型的回文自串,方法一样就得再敲点代码
  python有个好处,就是列表负向不会越界,HoHo~





  1 #!/bin/env/python
2 # -*- encoding:utf-8 -*-
3 #Filename: 2.py
4
5 import sys
6
7 def Find_point(base, index):
8     '''Find point method'''
9     rt_point = -1
10     if base[index-1] == base[index+1]:
11         rt_point = index
12     return rt_point
13
14 def Get_length(base, point, length):
15     '''Get huiwen length'''
16     rt_len = -1
17     for i in range(1, (length+1)/2):
18         if point - i >= 0 and point + i < length:
19             if base[point-i] == base[point+i]:
20                 rt_len = i
21             else:
22                 break
23         else:
24             break
25     return rt_len
26
27
28 def Get_huiwen(init_in):
29     '''Get huiwen'''
30     base = str(init_in)
31     length = len(base)
32     huiwen_point = -1
33     huiwen_len = -1
34     for i in range(0, length - 1):
35         tmp_point = -1
36         tmp_len = -1
37         tmp_point = Find_point(base, i)
38         if tmp_point != -1:
39             tmp_len = Get_length(base, tmp_point, length)
40         if tmp_len > huiwen_len:
41             huiwen_point = tmp_point
42             huiwen_len = tmp_len
43     if huiwen_point == -1 and huiwen_len == -1:
44         return "None"
45     start = huiwen_point - huiwen_len
46     end = huiwen_point + huiwen_len + 1
47     return base[start:end]
48
49 if __name__ == "__main__":
50     for line in sys.stdin:
51         arg = line.strip()
52         rt_value = Get_huiwen(arg)
53         print "base:\n%s\nhuiwen:\n%s" % (arg, rt_value)
View Code   
  肚子咕咕叫了,下次补第三题。。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60851-1-1.html 上篇帖子: 用python 来当配置文件 下篇帖子: 树莓派RaspberryPi串口Python操作指南
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表