zoukankan      html  css  js  c++  java
  • 华为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)
    

    结果展示

    额,代码貌似有点长了,路过的童鞋要是有什么更简单高效的方法可以在评论中点出来的呦~~,本女子不胜感激。

    认真对待每一天,加油
  • 相关阅读:
    springcloud12-spring cloud stream
    Linux上安装gitbook并拉取git项目编译
    Python 之一条命令生成项目依赖包文件 requirements.txt
    python跨模块使用全局变量的实现方法
    微信朋友圈测试用例
    linux安装maven
    jenkins上集成sonar
    windows上安装sonar并使用其分析项目
    jquery 点击同级元素隐藏,再点击显示
    10进制转16进制自动补全8位 并高低位转换
  • 原文地址:https://www.cnblogs.com/sunshine21/p/7747874.html
Copyright © 2011-2022 走看看