华为2018软件岗笔试题之第一题python求解分享
闲来无事,突然看到博客园首页上有人写了篇了华为2018软件岗笔试题解题思路和源代码分享。看了下题目,感觉第一题能做出来,就想着用刚刚学的python试着写一下,花费的时间有点长~~,看来又好长时间没练习算法了。
题目描述
输入两个字母串,将两个字母串都包含的字母用'_'替换后,输出两个字母串的剩余部分。
输入描述:
输入两个字符串,字符串最大长度为100。字符串只包含字母,不可能为空串,区分大小写。
输出描述:
按字符串顺序输出处理后的字符串
示例1
输入
abcd
bdef
输出
a_c_
__ef
解题思路:对输入的两个字符串分别建立ASCII中a-z和A-Z字符顺序的hash表,hash表默认为0,遍历一次字符串,每出现一个字符对应的hash表加1,可以得到包含字符出现次数的hash表。之后,对字符串中的每一个字符根据两个hash表判断是否在两个字符串都包含,如果是用'_'替换。最后输出字符串。
python关键点:因为str类型是不可变类型,所以我想到了先用list()函数把字符串转换成列表,之后替换就变得容易了。
代码展示
def replaceSame(str1, str2):
list1 = list(str1)
list2 = list(str2)
hashTable1 = {}
hashTable2 = {}
for i in range(65, 91):
hashTable1[i] = 0
hashTable2[i] = 0
for i in range(97, 123):
hashTable1[i] = 0
hashTable2[i] = 0
for i in list1:
hashTable1[ord(i)] += 1
for i in list2:
hashTable2[ord(i)] += 1
for i in list1 if len(list1)>=len(list2) else list2:
if hashTable1[ord(i)]>0 and hashTable2[ord(i)]>0:
list1[list1.index(i)] = '_'
list2[list2.index(i)] = '_'
print("".join(list1))
print("".join(list2))
def judge(str1, str2):
if len(str1)>10 or len(str2)>10:
print('请输入长度不超过100的字符串')
return False
elif str1=="" or str2=="":
print('字符串不能为空')
return False
for j in a:
if 65<=ord(j)<=90 or 97<=ord(j)<=122:
continue
else:
print('请输入只包含字母的字符串')
return False
return True
if __name__ == '__main__':
a = input("a=")
b = input("b=")
if judge(a, b):
replaceSame(a, b)
结果展示

额,代码貌似有点长了,路过的童鞋要是有什么更简单高效的方法可以在评论中点出来的呦~~,本女子不胜感激。
华为2018软件岗笔试题之第一题python求解分享的更多相关文章
- 2018春招-今日头条笔试题-第四题(python)
题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) #-*- coding:utf-8 -*- class Magic: ''' a:用于存储数组a b:用于存储数组b num:用于 ...
- 2018春招-今日头条笔试题-第三题(python)
题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 本题的做法最重要的应该是如何拼出‘1234567890’,对于输入表达试获得对应的结果利用python内置函数eval ...
- C/C++笔试题(基础题)
为了便于温故而知新,特于此整理 C/C++ 方面相关面试题.分享,共勉. (备注:各题的重要程度与先后顺序无关.不断更新中......欢迎补充) (1)分析下面程序的输出(* 与 -- 运算符优先级问 ...
- 阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)
前言 第一次网上笔试,被虐的很惨.一是不太习惯,最主要的是还是自己对Python的掌握,还不够熟练.下面是这次阿里笔试相关信息 笔试时间是,2015年8月23日,10:00——12:00 对于笔试题, ...
- 面试题之第一部分(Python基础篇) 80题
第一部分(python基础篇)80题 为什么学习Python?==*== # 1. python应用于很多领域,比如后端,前端,爬虫,机器学习(人工智能)等方面,几乎能涵盖各个开发语言的领域,同时它相 ...
- 【笔试必备】常见sql笔试题(30题)
sql是测试从业者必备的技能之一,基本上也是笔试必考内容. 所以,不要让sql拖了后腿,有些测友一遇到多表关联查询就犯晕,甚至连单表的执行顺序都没搞懂,下面简单介绍下,顺便给一些题供大家练习. 单表执 ...
- c#软件工程师笔试题
近来有打算重新找工作,还没提离职,投了几家公司简历,其中一家比较中意的公司给发了面试题,其实,好像是好几天前的事了,主要是Gmail邮箱很少用,所以一直都没去看,今天看到题目给解了. 题目如下: 题目 ...
- HW2018校招软件类笔试题
一. 1.题目 输入一个字符串,输出字符串中最长的数字串.如果有多个数字串长度相等且都是最长的,则按照字符串顺序输出最后一个最长的数字串. 2.解答 [code] import java.util.* ...
- 2018最新php笔试题及答案(持续更新)
php中include和require的区别 在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容.include 和 require 语句用于在执行流中插入写在其他文件中 ...
随机推荐
- centos7之vm11添加网卡
需求 根据实际需求原来有一块网卡,现在需要新加一块网卡做集群. 1.在虚拟机添加一块网卡,开机后ip a查看是不是新加了一块网卡,下图是为了讲解,其实已经是做完的状态. 2.上满我们看到新加了一块网卡 ...
- linux之硬盘管理fdisk
1.首先我们用虚拟机模拟服务器加入一块新的硬盘,硬盘容量入下图5GB硬盘. 2.首先我们要对它进行分区,我们从上面知道需要分区格式化的是第二块硬盘. 3.输入n回车是新建分区,p是主分区(只能建立4个 ...
- CentOS7装Tomcat
有两种安装方式:(1)yum 命令 (2)安装包 本次采用第二种方式: 1.windos下载apache-tomcat-7.0.73.tar.gz安装包 2.通过WinSCP传到linux下(本次放 ...
- Django--CRM
一 . 什么是CRM CRM就是客户关系管理系统(customer relationship management) 二 . 用户登录 # models.py文件 class UserProfile( ...
- 将WCF寄宿在托管的Windows服务中
在我之前的一篇博客中我介绍了如何发布WCF服务并将该服务寄宿于IIS上,今天我再来介绍一种方式,就是将WCF服务寄宿在Windows服务中,这样做有什么好处呢?当然可以省去部署IIS等一系列的问题,能 ...
- 《Tensorflow从入门到精通》
第一 开发环境搭建 1. tensorflow的环境搭建 windows下安装cpu版tensorflow: pip install tensorflow 在ubuntu上安装gpu版tensorfl ...
- 洛谷 p1092 虫食算
题目链接: https://www.luogu.org/problemnew/show/P1092 这个题折腾了我好久 这其实本质上是一道凑算式的题目 ,让一个二维数组存算式,一个一位数组存字母分别代 ...
- 文件操作 chardet使用
#_*_coding:utf-8_*_ import chardet #f = open(file="兼职白领学生空姐模特护士联系方式.txt", mode="rb&qu ...
- bzoj5358
Problem A. 口算训练Input file: stdinOutput file: stdoutTime limit: 5 secondsMemory limit: 512 megabytes小 ...
- Qt QLabel的使用
QLabel类主要用来文本和图像的显示,没有提供用户交互功能.QLabel对象的视觉外观可以由用户自定义配置. 它还可以为另外一个可获得焦点的控件作为焦点助力器. QLabel可以显示下列的所有类型: ...