手机版 | 登陆 | 注册 | 留言 | 设首页 | 加收藏
当前位置: 网站首页 > python教程 > 文章 当前位置: python教程 > 文章

大厂测试python笔试题最全的网站python笔试题库代码题100题

时间:2022-08-08    点击: 次    来源:网络    作者:佚名 - 小 + 大

大厂测试python笔试题最全的网站python笔试题库代码题100题


下载地址

https://share.weiyun.com/gcOeOitM


资料目录
100道Python面试题
5个等待挑战的Python面试题(附答案)
python基础面试题三十一道(附详细答案)
python面试基础题十大陷阱(附详细答案)
python面试真实笔试题带答案(1-10题)
Python面试中必看的8个必考问题(附详细答案)
Python爬虫开发面试常见问题(附详细答案)
Python爬虫面试题(附详细答案)
python数据分析师面试题选(附详细答案)
Python数据挖掘试题四十道(附答案)
阿里巴巴Python开发工程师面试题(附答案)
常见的25个python面试问答(附详细答案)
Python经典面试题和答案解析
四类必须提前准备的Python程序员面试问题
出现频率最高的python面试题集锦(附详细答案)
珍藏版Python web后端开发工程师面试试题
尚观python第一阶段考试(面试真题模拟)
老男孩Python全栈7期练习题(面试真题模拟)
傲梦python笔试题及答案
python 笔试题(附带答案)
Python题库(已收录100道真题)
python第一阶段考试题
python基础试题(含答案)
PYTHON测试题和答案
Python考试题复习知识点试卷试题
python期末考试复习试卷

举例

字符串的排列
题目要求
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
换句话说,第一个字符串的排列之一是第二个字符串的子串
实例1
输入: s1 = "ab" s2 = "eidbaooo"
输出: True
解释: s2 包含 s1 的排列之一 ("ba")
实例2
输入: s1= "ab" s2 = "eidboaoo"
输出: False
思路分析
暴力算法
以字符串“abc” 为例,它有6种排列,分别为
abc
acb
bac
bca
cab
cba
你可以写一个算法,找出一个字符串的所有排列,然后利用字符串的find函数,在第二个字符串中逐个查找是否存在这些排列。
上面的思路虽然笨重,但可以解决问题。
更优的解法
让我们把思路从字符串排列上移开,假如有一个字符串包含了字符串“abc”的6个人排列中的某一个,那么可以肯定的讲,在这个字符串里,一定有一个长度为3的子串,这个子串包含了a,b,c这三个字符。
至于顺序,则完全不用考虑,只要这个长度为3的子串包含了a,b,c这三个字符,那么这个子串就一定是字符串“abc”的某个排列。
算法思路如下
1. 统计第一个字符串的字符信息,存放于字典中,记录每个字符的数量
2. 遍历第二个字符串,同样统计每个字符的数量,然后和第一步中的字符信息进行比较,其实就是两个字典的比较。这里有一个需要注意的地方,遍历过程中,只能统计子串的信息,而不是从头到尾的去做统计,如果第一个字符串的长度是3,那么当第二个字符串遍历到索引5时,只能统计索引3到5这个范围内的信息
如果两个字典完全相同,就说明第二个字符串的这段子串是第一个字符串的一个排列
实例代码
def check_inclusion(s1, s2):
    s1_chr_info = {}
    for chr in s1:
        s1_chr_info.setdefault(chr, 0)
        s1_chr_info[chr] += 1

    s2_chr_info = {}
    start_index = 0     # 连续空间开始的位置
    for index, chr in enumerate(s2):
        if chr not in s1_chr_info:
            s2_chr_info.clear()
            start_index = index+1
            continue
        # 右侧进
        s2_chr_info.setdefault(chr, 0)
        s2_chr_info[chr] += 1

        # 左侧出
        left_index = index - len(s1)
        if left_index >= start_index and s2[left_index] in s1_chr_info \
                and s2[left_index] in s2_chr_info :
            s2_chr_info[s2[left_index]] -= 1

        if is_dict_same(s1_chr_info, s2_chr_info):
            return True

    return False


def is_dict_same(dict_1, dict_2):
    """
    dict_1 是第一个字符串的统计信息,以它为基准进行判断
    :param dict_1:
    :param dict_2:
    :return:
    """
    if len(dict_1) != len(dict_2):
        return False

    for k, v in dict_1.items():
        if k not in dict_2:
            return False
        if v != dict_2[k]:
            return False

    return True


if __name__ == '__main__':
    print(check_inclusion("ab", "eidbaooo"))
    print(check_inclusion("abcd", "eidbadcooo"))
    print(check_inclusion("abcd", "eicwdbardcooo"))


上一篇:python笔试题110题Python笔试题一维二维python笔试题 内存10m

下一篇:没有了

推荐阅读
声明 | 联系我们 | 关于我们
备案ICP编号  |   QQ:2151239526  |  地址:北京市东城区  |  电话:16605168200  |