华为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 语句用于在执行流中插入写在其他文件中 ...
随机推荐
- 图解Python的直接赋值与浅拷贝和深度拷贝三者区别
直接赋值:其实就是对象的引用(别名). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象 ...
- CSS自定义属性expression_r
CSS的出现使网页制作者在对网页元素的控制方便许多,当然,有利必有弊,CSS只能对颜色.大小.距离等静态样式有效,对于要实现某些html元素的动态样式就显得有些力不从心.有了CSS的自定义属性expr ...
- 【python练习题】程序14
#题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. #我的方法应该比网上的更加简洁,只是递归可能速度慢 n = input('请输入一个正整数:') n = int(n) X ...
- vuex2.0 基本使用(4) --- modules
vue 使用的是单一状态树对整个应用的状态进行管理,也就是说,应用中的所有状态都放到store中,如果是一个大型应用,状态非常多, store 就会非常庞大,不太好管理.这时vuex 提供了另外一种方 ...
- [离散时间信号处理学习笔记] 3. 一些基本的LTI系统
首先我们需要先对离散时间系统进行概念上的回顾: $y[n] = T\{ x[n] \}$ 上面的式子表征了离散时间系统,也就是把输入序列$x[n]$,映射称为$y[n]$的输出序列. 不过上述式子也可 ...
- Nginx websocket反向代理
L:106 现在主流的反向代理,通过长链接可以从服务器推送数据到页面 升级成websocket反向代理必须根据上面的配置做配置 缺点无法多路复用,也就是没办法并行 我们测试下Websocket反向代理 ...
- EUV光刻!宇宙最强DDR4内存造出
三星电子宣布开发出业内首款基于第三代10nm级工艺的DRAM内存芯片,将服务于高端应用场景,这距离三星量产1y nm 8Gb DDR4内存芯片仅过去16个月. 第三代10nm级工艺即1z nm(在内存 ...
- django---一对多和多对多字段的操作训练
建表准备: django项目models.py建表 from django.db import models class Myclass(models.Model): cname = models.C ...
- 数据库管理 trove openstack
Trove是数据库即服务的OpenStack.它旨在完全基于OpenStack运行,其目标是允许用户快速轻松地利用关系数据库的功能,而无需处理复杂的管理任务.云用户和数据库管理员可以根据需要配置和管理 ...
- ZOJ 1403 解密
参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6412212.htmlSafecracker Time Limit: 2 Seconds ...