闲来无事,突然看到博客园首页上有人写了篇了华为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求解分享的更多相关文章

  1. 2018春招-今日头条笔试题-第四题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) #-*- coding:utf-8 -*- class Magic: ''' a:用于存储数组a b:用于存储数组b num:用于 ...

  2. 2018春招-今日头条笔试题-第三题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 本题的做法最重要的应该是如何拼出‘1234567890’,对于输入表达试获得对应的结果利用python内置函数eval ...

  3. C/C++笔试题(基础题)

    为了便于温故而知新,特于此整理 C/C++ 方面相关面试题.分享,共勉. (备注:各题的重要程度与先后顺序无关.不断更新中......欢迎补充) (1)分析下面程序的输出(* 与 -- 运算符优先级问 ...

  4. 阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)

    前言 第一次网上笔试,被虐的很惨.一是不太习惯,最主要的是还是自己对Python的掌握,还不够熟练.下面是这次阿里笔试相关信息 笔试时间是,2015年8月23日,10:00——12:00 对于笔试题, ...

  5. 面试题之第一部分(Python基础篇) 80题

    第一部分(python基础篇)80题 为什么学习Python?==*== # 1. python应用于很多领域,比如后端,前端,爬虫,机器学习(人工智能)等方面,几乎能涵盖各个开发语言的领域,同时它相 ...

  6. 【笔试必备】常见sql笔试题(30题)

    sql是测试从业者必备的技能之一,基本上也是笔试必考内容. 所以,不要让sql拖了后腿,有些测友一遇到多表关联查询就犯晕,甚至连单表的执行顺序都没搞懂,下面简单介绍下,顺便给一些题供大家练习. 单表执 ...

  7. c#软件工程师笔试题

    近来有打算重新找工作,还没提离职,投了几家公司简历,其中一家比较中意的公司给发了面试题,其实,好像是好几天前的事了,主要是Gmail邮箱很少用,所以一直都没去看,今天看到题目给解了. 题目如下: 题目 ...

  8. HW2018校招软件类笔试题

    一. 1.题目 输入一个字符串,输出字符串中最长的数字串.如果有多个数字串长度相等且都是最长的,则按照字符串顺序输出最后一个最长的数字串. 2.解答 [code] import java.util.* ...

  9. 2018最新php笔试题及答案(持续更新)

    php中include和require的区别 在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容.include 和 require 语句用于在执行流中插入写在其他文件中 ...

随机推荐

  1. prometheus和metrucs-server (k8s监控)

    资源指标:metrucs-server 自定义指标:prometheus, k8s-prometheus-adapter(转换prometheus数据的格式) 新一代架构: 核心指标流水线:由kube ...

  2. k8s授权访问

    #监听本地的8080端口 kubectl  proxy --port=8080 [root@k8s-m ~]# kubectl proxy --port=8080Starting to serve o ...

  3. Java多线程系列——原子类的实现(CAS算法)

    1.什么是CAS? CAS:Compare and Swap,即比较再交换. jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronou ...

  4. 去掉dede织梦position当前位置最后一个箭头的方法

    理论是,dede的当前位置标签{dedefield name='position'}结构是 首页 > 主栏目 > 子栏目 > ,这就说明,而箭头符号字段数据都是在后台设置后存储在数据 ...

  5. Python——FTP上传和下载

    一.FTP对象方法说明 login(user='anonymous',passwd='', acct='') 登录 FTP 服务器,所有参数都是可选的 pwd() 获得当前工作目录 cwd(path) ...

  6. How to enable mp3 on Ubuntu

    apt install gstreamer1.0 libavcodec57

  7. JSON in SQL Server 2016

    JSON functions in SQL Server enable you to analyze and query JSON data, transform JSON to relational ...

  8. Web API 2 使用Entity Framework Part 1.

    创建项目 打开Visual Studio,选择ASP.NET Web Application,项目名称BookService并点击OK. 选择Web API 模板 如果你想使用Azure App Se ...

  9. Spring 使用介绍(十一)—— Spring事件

    一.简介 spring事件是观察者设计模式的实现,主要有三个元素: 事件 spring事件由ApplicationEvent定义 监听者 由ApplicationListener定义 发布者 由App ...

  10. Codeforces Round #437 Div. 1

    A:显然构造一组只包含1和2面值的数据即可. #include<iostream> #include<cstdio> #include<cmath> #includ ...