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

[经验分享] 传说中华为的面试编程题

[复制链接]

尚未签到

发表于 2018-7-26 06:05:34 | 显示全部楼层 |阅读模式
  本人只会Python,于是下面所有试题都是按Python 3.5编写。
  请用任意语言完成下列试题:
  1)两个字符串A、B。从A中剔除存在于B中的字符。比如A=“helloworld”,B="er",那么剔除之后A变为"hllowold"。
  【解析】如果B里面只有一个字母,那就比较简单了,再怎么不会,一个for in语句也搞定了。但是现在B里面是多个字母,而且python要写一个类似C++里的指针还很痛苦,怎么办?
  这道题其实比较仁慈,面试官说可以认为A和B里只有小写字母。
A=input(str("请输入一个句子:"))  
B=input(str("请输入您要去掉的字母:"))
  
AAA=list(A)        #将str拆成list,化单词为一个一个的字母
  
BBB=list(B)
  
newwords=[n for n in AAA if n not in BBB]    #精髓!列表生成式赛高!
  
words="".join(newwords)        #把list重新组合成str
  
print("把字母去掉后的内容是:"+words)
  试验成果:
DSC0000.png

  可以看得出,不仅能去掉字母,甚至可以去掉空格!(对比一下这两句话)
  2)有一个int型数组,每两个相邻的数之间的差值不是1就是-1.现在给定一个数,要求查找这个数在数组中的位置。
  【解析】这题考c或许难一点,考python就是index和find,int虽然是整数,但是可以转成list。
  3)一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后。而且各部分内部分别有序。
  【解析】分门别类型问题,很多人又要for in一一对比,其实这里应该用正则,但是要注意,正则出来的东西是list,要转换。
import re  
words=input(str("请用大写小写加数字混合输入一串东东:"))
  
a=re.findall("[A-Z]",words)
  
a.sort()        #题中要求各部分内部分别有序,那就sort()一下
  
b=re.findall("[a-z]",words)
  
b.sort()
  
c=re.findall("[0-9]",words)
  
c.sort()
  
newword=b+a+c
  
newwords="".join(newword)
  
print("经过整合之后的这一坨东西是:"+newwords)
  实验成果:
DSC0001.png

  4)按要求分解字符串,输入两个数M,N;M代表输入内容,N代表输出的每串字符串的位数,不够补0。例如:输入“ilovethisgame" ,“4”,则输出为“ilov”,“ethi“,”sgam”,"e000"。
  【解析】这道题有两个难点,一个是判断N和M以及M%N,第二个就是字符串补齐。
  先说字符串补齐,一般来说提到“补齐”,第一反应就是format()函数,但是由于题中给的是变量,而format()函数需要给的是一个确定的数,所以这里不能用format()。如果用正则补齐,也是同理,在切块那一步就要确定具体数字,所以正则这条路也不通。我在这里只能用原始的补齐方法。
N=input(str("请输入字符串长度:"))  
n=int(N)
  
m=input(str("请输入字符串内容:"))
  
def f(string,width):
  
    return [string[x:x+width] for x in range(0,len(string),width)]
  
aaa=f(m,n)
  
#print(aaa)
  
x=len(aaa[-1:])
  
y=n-x
  
zero="0" * y        #补齐0
  
bbb=aaa[-1:]    #注意这里,不可以写成bbb=aaa[-1]!
  
#print(bbb)
  
bbb.append(zero)
  
b="".join(bbb)    #把list元素合并成一个
  
aaa[-1]=b
  
print(aaa)
  实验成果:
DSC0002.png

  5)假设aaa="james",请写出aaa所有的字母所有的排列组合,比如j,a,m,e,s,ja,jam,jame,james...
import itertools  
aaa=input(str("Please sign a word:"))
  
x=1
  
while x<=len(aaa):
  

  
    for i in list(itertools.permutations(aaa,x)):    #如果这里不用for的话,出现的是列表套元组
  
        print("".join(i))
  
    x=x+1
  【评析】list整合成str的方式就是.join(),如果是tuple整合成str的方式也是一样的,比如:
>>> bbb=('x', 'y', 'z')    #tuple  
>>> "".join(bbb)
  
'xyz'
  
>>> bbb=["x","y","z"]    #list
  
>>> "".join(bbb)
  
'xyz'
  
>>> bbb=[('x',), ('y',), ('z',)]        #请注意,这种方法就是错误的!
  
>>> "".join(bbb)
  
Traceback (most recent call last):
  
  File "<pyshell#55>", line 1, in <module>
  
    "".join(bbb)
  
TypeError: sequence item 0: expected str instance, tuple found
  实验成果:
DSC0003.png

运维网声明 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-541303-1-1.html 上篇帖子: 华为交换机配置ssh登陆 下篇帖子: 关于思科华为私网互联测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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