python面试题-如“上海深圳深圳上海“,要求输入一个匹配模式,比如:aabb,判断是否符合(代码片段)

上海-悠悠 上海-悠悠     2023-01-01     271

关键词:

面试题

判断一个字符串的构成是词+空格的组合,如"上海 深圳 深圳 上海",要求输入一个匹配模式,
比如aabb,来判断该字符串是否符合该模式
1.pattern=“abba” s=“上海 深圳 深圳 上海” 返回true
2.pattern=“aabb” s=“上海 深圳 深圳 上海” 返回false
3.pattern=“baab” s=“上海 深圳 深圳 上海” 返回true

解决思路1

先写个匹配规则函数,如输入[“a”,“b”,“b”,“a”],函数返回[1, 2, 2, 1]
输入[“上海”, “深圳”, “深圳”, “上海”],函数返回[1, 2, 2, 1]

# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

def pattern_rule(s1):
    """
    传s1返回其匹配规则如:1221
    :param s1: s1是传入的list->["a","b","b","a"]
    或传入list->["上海", "深圳", "深圳", "上海"]
    :return: list->[1, 2, 2, 1]
    """
    result = []
    temp = []
    num = 0
    for i in s1:
        if i not in temp:
            temp.append(i)
            num += 1
            result.append(num)
        else:
            result.append(temp.index(i)+1)
    return result

if __name__ == '__main__':
    s="上海 深圳 深圳 上海"
    print(pattern_rule(s.split(" ")))
    pattern="abba"
    print(pattern_rule(list(pattern)))

运行结果

[1, 2, 2, 1]
[1, 2, 2, 1]

通过判断函数返回的结果,来判断字符串是不是该模式

# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

def pattern_rule(s1):
    """
    传s1返回其匹配规则如:1221
    :param s1: s1是传入的list->["a","b","b","a"]
    或传入list->["上海", "深圳", "深圳", "上海"]
    :return: list->[1, 2, 2, 1]
    """
    result = []
    temp = []
    num = 0
    for i in s1:
        if i not in temp:
            temp.append(i)
            num += 1
            result.append(num)
        else:
            result.append(temp.index(i)+1)
    return result


def is_pattern(pattern="abba", s="上海 深圳 深圳 上海"):
    """判断2个的结果是否一致"""
    r1 = pattern_rule(s.split(" "))
    r2 = pattern_rule(list(pattern))
    return "true" if r1 == r2 else "false"

if __name__ == '__main__':
    print(is_pattern(pattern="abba"))
    print(is_pattern(pattern="aabb"))
    print(is_pattern(pattern="baab"))
    print(is_pattern(pattern="abc", s="上海 深圳 杭州"))

运行结果

true
false
true
true

解决思路2

直接拿2个字符串当成列表循环对比,用一个临时字典temp,保存为键值对格式:‘a’: ‘上海’, ‘b’: ‘深圳’
如果下一个key在字典中存在,就不添加字典,从字典取值跟s里面的值对比
如果下一个key在字典中不存在,就添加字典

# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

def is_pattern(pattern="acba", s="上海 深圳 深圳 上海"):
    p1 = list(pattern)
    s1 = s.split(" ")
    if not p1 or not s1 or len(p1) != len(s1):
        return False
    temp = 
    flag = True
    for i in range(len(p1)):
        if p1[i] not in temp.keys() and s1[i] not in temp.values():
            temp[p1[i]] = s1[i]
        else:
            if temp.get(p1[i]) != s1[i]:
                flag = False
    return flag


if __name__ == '__main__':
    print(is_pattern(pattern="abba", s="上海 深圳 深圳 上海"))
    print(is_pattern(pattern="acba", s="上海 深圳 深圳 上海"))
    print(is_pattern(pattern="baab", s="上海 深圳 深圳 上海"))
    print(is_pattern(pattern="abc", s="上海 深圳 北京"))
    print(is_pattern(pattern="aabc", s="上海 深圳 北京 上海"))
    print(is_pattern(pattern="abca", s="上海 深圳 北京 上海"))

运行结果

True
False
True
True
False
True

python面试题大全(代码片段)

python面试题大全(二)最近开始整理python的资料,博主建立了一个qq群,希望给大家提供一个交流的同平台938587844。22.Python如何定义一个函数?定义函数的格式是:deffunctionName(arg):23.有没有一个工具可以帮助查找python的bug和进行静... 查看详情

python算法面试题(代码片段)

1、题目是:有一组“+”和“-”符号,要求将“+”排到左边,“-”排到右边,写出具体的实现方法。defStringSort(data):startIndex=0endIndex=0count=len(data)whilestartIndex+endIndex<count:ifdata[startI 查看详情

python20181225——面试题

1、如何用一行代码生成[1,4,9,16,25,36,49,64,81,100]?2、一行代码实现删除列表中重复的值?3、如何生成一个随机数?4、列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]5、如何将字符串... 查看详情

python面试合集史上最全面python面试题和详解(10套)完整版

...档格式为md,可以以文本的形式打开。内容如题,全面的Python面试题和详解,需要的朋友可下载试试!包含:2019Python最新面试题及答案16道题、110道Python面试题(上)、最常见的35个Python面试题及答案(2018版)、整理的最全python... 查看详情

一道别人分享的阿里面试题

前两天看到一个别人写的面试经历一次羞愧难当的阿里前端笔试经历,本次换工作不会再寻求任何阿里工作机会,看了下题目自己试着写了下,短短续续差不多写了1天终于完后才能了。实现一个红绿灯的需求要求如下:/**1.信号... 查看详情

python3面试题:如何用python实现栈(stack)的操作?(代码片段)

前言常见python面试题:如何用python实现栈(Stack)的操作?什么是栈(Stack)栈是一个很基本的数据结构,也是非常重要的数据结构,栈的特点:“先进后出,后进先出”,举个生活中最... 查看详情

java线程面试题(代码片段)

不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的... 查看详情

2022年python技术类面试题总结(面试题+答案解析)

参考技术A这是一位有着五年Python经验的好友最近对Python岗位面试后的一篇经验总结,从Python就业方向到Python面试题。Python就业方向:下面是Python面试知识点,总结了华为、阿里巴巴等互联网公司Python常问面试题。每道题都提供... 查看详情

关于面试

  本人自学coding,始于Python,去年开始,做算法题。而后实战爬虫,算是自己的第一个Python项目,代码凌乱,没有任何类和对象的概念,勉强实现所需功能,爬取若干有意思的短视频。  至于最近找工作,跟Python相关,做算... 查看详情

这么一张sql面试题,你能否在要求的15分钟内完成?

这是别人发的一道​​MySQL面试题​​,别人要求你在15分钟内完成。一眼看过去,这张面试题并不是很难,但是你能不能很快做出来呢?可以看到,最下方的第3题可能不太全,但是影响不大,后面的那就先不管。1.第一题1)建... 查看详情

python面试:经典python面试题面试者必看!(代码片段)

随着Python在企业中的应用越来越多,岗位需求越来越大,面试成为了搞定优质职位的快速方式,下面是笔者面试10余家企业总结的面试题,希望对Python从业者有帮助。1.Python是如何进行内存管理的?答:从三个方... 查看详情

网络协议面试题

1.TCP和UDP的区别?答:TCP是面向连接的传输协议,提供可靠的数据传输和错误检测,适用于对可靠性要求较高的场景,如文件传输,网页访问等;UDP是无连接的传输协议,不保证传输的可靠性,适用于对实时性要求较高的场景,... 查看详情

2018python面试题web框架(代码片段)

1、谈谈你对http协议的认识。HTTP协议(HyperTextTransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档... 查看详情

最强面试题整理第一弹:python基础面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶Python后台开发爬虫机... 查看详情

最强面试题整理第一弹:python基础面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶Python后台开发爬虫机... 查看详情

最强面试题整理第一弹:python基础面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶Python后台开发爬虫机... 查看详情

python基础面试题整理---从零开始每天十题(04)(代码片段)

一、Q:如何用Python来进行查询和替换一个文本字符串?  A:可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement,string[,count=0])    replacement是被替换成的文本    string是需要被替换的文本    count... 查看详情

最强面试题整理第二弹:python进阶面试题(附答案)(代码片段)

大家好呀,我是Rocky0429。Python面试的时候,会涉及到很多的八股文,我结合自己的经验,整理Python最强面试题。Python最强面试题主要包括以下几方面:Python基础(已完成)Python进阶(已完成)Pyt... 查看详情