Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配

Win11下Android模拟器报HAXM未安装?三步搞定虚拟化配置(附终端命令) 本文详细解析了Win11下Android模拟器HAXM报错的解决方案,从虚拟化配置到终端命令实战。通过检查BIOS设置、调整Windows功能及执行PowerShell命令,三步搞定虚拟化配置问题,有效提升模拟器性能。特别针对Win11与HAXM的兼容性问题提供了专业指导。 阅读详情

Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配

1. 题目

你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。

示例 1:

输入: pattern = “abba”, value = “dogcatcatdog”
输出: true
示例 2:

输入: pattern = “abba”, value = “dogcatcatfish”
输出: false
示例 3:

输入: pattern = “aaaa”, value = “dogcatcatdog”
输出: false
示例 4:

输入: pattern = “abba”, value = “dogdogdogdog”
输出: true
解释: “a”=“dogdog”,b="",反之也符合规则
提示:

0 <= len(pattern) <= 1000
0 <= len(value) <= 1000
你可以假设pattern只包含字母"a"和"b",value仅包含小写字母。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pattern-matching-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2.思路

  • 可以遍历ab可能出现的字符,然后对比和value是不是相等,如果有相等的,证明匹配上了,如果没有则没有
  • 整个可以做一个递归,比如a先匹配上了,递归继续匹配
  • a的长度确定之后,b的长度也就确定了
  • a的长度遍历是0-n的复杂度,对比每一次需要n,所以是一个n*n

3.代码

class Solution {
public:
    bool patternMatching(string pattern, string value) {
        
        if (pattern.length() == 0)
            return value.length() == 0 ? true:false; 
        
        char startChar = pattern[0];
        int startNum = 0;
        int nextNum = 0;
        for (int i = 0; i <pattern.length(); i++) {
            if (pattern[i] == startChar) {
                startNum++;
            } else {
                nextNum++;
            }
        }
        if (value == "" ){
            return nextNum==0?true:false;
        }
        int tryStartLength = 0;
        int tryNextLength = 0;
        
        for (int i = 0; i <=value.length(); i++) {
            tryStartLength = i;
           //cout << value.length() << " "  << tryStartLength << " " <<  startNum <<  endl;
           int temp = value.length()-tryStartLength*startNum;
           
            if (temp < 0)
                continue;
            //cout <<tryStartLength << " : " <<value.length()-(tryStartLength*startNum) << endl;
            if (nextNum!=0 && (value.length()-tryStartLength*startNum)%nextNum!=0)
                continue;
            else {
                if (nextNum != 0)
                    tryNextLength = (value.length()-tryStartLength*startNum)/nextNum;
                //cout << tryStartLength << " " << tryNextLength << endl;
                string startPattern ="";
                string nextPattern ="";
                string patternValue="";
                int index = 0;
                for (int j = 0; j <pattern.length(); j++) {
                    if (pattern[j] == startChar) {
                        if (startPattern=="")
                            startPattern = value.substr(index, tryStartLength);
                        patternValue += startPattern;
                        index += tryStartLength;
                    } else {
                        if (nextPattern=="")
                            nextPattern = value.substr(index, tryNextLength);
                        patternValue += nextPattern;
                        index += tryNextLength;
                    }
                }
                
                bool flag = true;
                //cout << patternValue <<  " BEGIN  " << flag << endl;
                if (patternValue.length() != value.length())
                    continue;
                for (int j = 0; j < patternValue.length(); j++) {
                    if (patternValue[j] != value[j]) {
                        flag = false;
                        break;
                    }
                }
                //cout << patternValue <<  " END  " << flag << endl;
                if (flag)
                    return true;
            }
        }
        return false;
    }
};

4.debug

bug 1:
“ab”
“”
value="" 特殊判断

bug2:
“bbbaa”
“xxxxxxy”
if 条件用这个判断:value.length()-tryStartLength*startNum,不行,非要赋值为int,数据紊乱

bug3:
“a”
“zqvamqvuuvvazv”
遍历x代表的字符串的时候,它的长度是0-value.length()

使用 Azure DevSecOps 和 AIOps 构建可扩展且安全的多区域金融科技 SaaS 平台 这家虚构的金融科技 SaaS 组织在 Microsoft Azure 上构建了一个现代化的多区域架构,以实现高可用性、主动安全性和简化的 DevSecOps 工作流。如果您是 DevOps 从业者、SRE 专业人士或致力于创建弹性、可扩展且安全的金融科技解决方案的技术领导者,您将从中获得可直接应用于您自身项目的见解和经验教训。与大多数快速扩张的金融科技公司一样,他们需要确保不间断的正常运行时间、坚不可摧的安全性以及快速的功能交付,以满足全球用户群的需求。即使是短暂的中断也会损害用户的信心和忠诚度。 阅读详情

相关推荐

Jetson AGX Orin到手必看:DP线选错黑屏、SSD不识别?这篇避坑指南帮你一次搞定

本文详细介绍了Jetson AGX Orin开发套件的硬件避坑指南,涵盖开箱检查、DP线选择、SSD兼容性等关键问题。通过实测数据和实用技巧,帮助开发者避免黑屏、存储不识别等常见问题,提升开发效率。特别推荐符合VESA认证的DP 1.4a线缆和兼容性优秀的SSD型号,确保设备稳定运行。

weixin_33696822的博客 433

LeetCode C++基础面试题汇总附答案(一)

这里整理了leetCode C++的基础面试第一部分,希望对大家有所帮助。

lejian的专栏 2099

Apache Hop集成Spring Boot实战:从配置到执行HPL文件

本文详细介绍了将Apache Hop集成到Spring Boot应用中的完整实战方案。通过配置核心依赖、初始化Hop环境、编写服务层逻辑,实现了在Java应用中程序化执行HPL管道文件,从而将可视化ETL能力无缝嵌入微服务架构,提升数据处理的自动化与可维护性。

blue42的博客 475

leetcode 精选面试题2 c++

文章目录[1047. 删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/)[258. 各位相加](https://leetcode.cn/problems/add-digits/)[345. 反转字符串中的元音字母](https://leetcode.cn/problems/reverse-vowels-of-a-string/)[面试题 01.05. 一次编辑](https://lee

l7_______的博客 574

219页华为供应链管理:市场预测S&OP计划、销售预测与存货管理精要

S&OP计划的整合作用:S&OP是一种综合的销售和运营计划流程,它将市场预测、生产能力、库存水平和财务目标整合在一起,以确保企业能够平衡供需,实现最佳的运营效率。持续监控与改进:市场预测、S&OP计划、计划委员会的决策以及存货管理都需要持续的监控和评估。供应链策略与执行:华为ISC拥有清晰的供应链策略,并通过SISC架构实现了策略的有效执行,包括供应链网络设计、库存管理、物流优化等。持续的供应链创新:华为ISC不断探索新的供应链管理方法和技术,如数字化供应链、智能物流等,以适应全球化和市场的快速变化。

zuoan1993的博客 2433

Yolov8-pose关键点检测:通用倒瓶颈(UIB)搜索块结合C2f二次创新 | 轻量化之王MobileNetV4

通用倒瓶颈(UIB)搜索块结合C2f二次创新

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 613

Leetcode——C++突击面试

C++突击面试1. 编译内存相关1.1. C++ 程序编译过程1.2. C++ 内存管理1.3. 栈和堆的区别1.4. 变量的区别1.5. 全局变量定义在头文件中有什么问题?1.6. 内存对齐1.7. 什么是内存泄露1.8. 怎么防止内存泄漏?内存泄漏检测工具的原理?2. 语言对比3. 面向对象4. 关键字库函数5. 类相关6. 语言特性相关7. 设计模式 1. 编译内存相关 1.1. C++ 程序编译过程 编译过程分为四个过程:编译(编译预处理、编译、优化),汇编,链接。 编译预处理:处理以 # 开头

Stephen 2万+

C#中通过Mapster实现轻量级高效对象映射器:从零到精通

本文介绍了.NET生态中高性能对象映射库Mapster的完整使用指南。从基础安装(通过NuGet包)到快速入门示例,展示了如何实现简单对象映射。进一步讲解了自定义映射规则、命名不一致属性的处理方式,以及如何在ASP.NET Core中集成Mapster服务。针对复杂场景,详细解析了嵌套对象映射的配置技巧,并提供了性能优化方案(如预编译映射器)和调试技巧(启用调试模式、捕获映射异常)。通过完整的代码实践,帮助开发者高效解决从基础到高级的对象映射需求。

墨夶的博客 742

串匹配习题

1、 你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a","go"是"b"),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。 示例 1: 输入: pattern = "abba", value = "dogcatcatdog" 输出: t

qq_43699776的博客 469

ISO 21434汽车网络安全标准深度解读系列(十):标准实施总结与展望

ISO21434标准深度解读系列总结篇系统回顾了汽车网络安全标准的核心内容与实施要点。文章梳理了10篇系列文章的结构体系,提炼出标准的三大核心价值:系统性方法(全生命周期覆盖、多层次管理)、风险导向理念(威胁驱动、动态管理)和供应链协同机制。总结了实施经验中的关键要素,包括高层承诺、专业团队建设,并提出了分阶段实施路径建议。同时分析了当前面临的技术挑战(系统复杂性、新兴技术)和管理挑战(文化转变、资源投入)。最后展望了AI应用、零信任架构等技术发展趋势,以及标准未来的演进方向,为企业实施提供战略与执行层面的

VehSwHwDeveloper的博客 557

在 Eclipse 里快速用上 SAP Joule:ABAP 开发者的 AI 助手上手指南

本文介绍了SAP Joule for developers如何集成在ABAP开发工具中,为开发者提供AI辅助能力。主要内容包括: Joule作为ADT的增强层,直接嵌入开发流程,支持在项目资源管理器、代码编辑器等场景下通过上下文菜单调用AI功能。 核心使用方式:打开Joule视图后,可在开发对象、代码片段等上下文中使用自然语言交互,请求解释、生成测试或获取示例代码。 重点功能: Explain:解释现有代码逻辑,降低理解成本 ABAP Unit测试生成:快速创建与上下文相关的测试用例 支持在传输管理器等完整

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 392

leetcode-面试题刷题-Tree(C++)

实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。 本题类似于求树的深度,注意定义是每个节点 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *righ...

mark_GJ的博客 367

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

leetcode: 模式匹配

题目 你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。 示例 1: 输入: pattern = "abba", value = "dogcatcatdog" 输出: t

剑髯的专栏 375

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

面试题 16.18. Pattern Matching LCCI

Title 你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。 示例 1: 输入: pattern = “abba”, value = “dogcatcatdog” 输出:

Alex 716

程序员面试金典 - 面试题 16.18. 模式匹配(逻辑题)

1. 题目 你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。 例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。 但需注意"a"和"b"不能同时表示相同的字符串。 编写一个方法判断value字符串是否匹配pattern...

Michael是个半路程序员 1957

【力扣】面试16.18:模式匹配

题目描述 你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。 例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。 编写一个方法判断value字符串是否匹配pattern字符串。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/p

Heart_for_Ling的博客 657

【每日一题】LeetCode. 面试题16.18. 模式匹配

每日一题,防止痴呆 = = 一、题目大意 你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。 来源:力扣(LeetCode) 链接:https://leetcode-.

Johnson的博客 362

[leetcode]字符串模式匹配,阿里面试算法题

你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。 示例 1: 输入: pattern = “abba”, value = “dogcatcatdog” 输出: true

iYhuitune的博客 559

leetcode【每日一题】 面试题 16.18. 模式匹配 Java

题干 你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。 示例 1: 输入: pattern = “abba”, value = “dogcatcatdog” 输出: tr

qq_43491066的博客 285

C++ 笔试每日一题(leetcode Plus one)

描述: Given a number represented as an array of digits, plus one to the number 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 思路:此题分两种情况讨论: 1,当数组最后一个数小于9时,我们直接将它加1就好了。 2,当最后一个数等于9时,这时候我们需要将...

weixin_42145502的博客 328

给出两个字符串a和b,判断字符串a是否包含字符串b

题目: 给出两个字符串a和b,例如 a=”ABJKI“, b=“JK”,则 a 包含 b 。 下面的方法很巧妙啊。

Poem~ 1万+

C++ 笔试每日一题(leetcode Permutation Sequence)

描述: The set [1,2,3,ĉ ,n] contains a total of n! unique permutations. By listing and labeling all of the permutations in order, We get the following sequence (ie, for n = 3): "123" "132" "213" "231" "...

weixin_42145502的博客 303

LeetCode习题整理(中等)II

煎饼排序 给定数组 A,我们可以对其进行煎饼翻转:我们选择一些正整数 k <= A.length,然后反转 A 的前 k 个元素的顺序。我们要执行零次或多次煎饼翻转(按顺序一次接一次地进行)以完成对数组 A 的排序。 返回能使 A 排序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10 * A.length 范围内的有效答案都将被判断为正确。 示例 1: 输入:[3,2,4,1] 输出:[4,2,4,3] 解释: 我们执行 4 次煎饼翻转,k 值分别为 4,2,4,和 3。 初始状态

qq_35090060的博客 2042

刷题汇总(三)leetcode 精选50题 C++答案总结

题目来源 腾讯精选练习(50 题) 信息更新时间:2019-3-11,因为要准备面前端,就用js做了遍来熟悉JavaScript这门语言,50道题均已提交通过。 补充:C++版答案(2019-8-27) GitHub地址:https://github.com/zj19941113/LeetCode-50-JavaScript-Answers 1、两数相加 给出两个 非空 的链表用来表示两个非负的整...

zhoujie1994的博客 5420

【python】:模式匹配

你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a","go"是"b"),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。 示例 1: 输入: pattern = "abba", value = "dogcatcatdog" 输出: tru

weixin_43587028的博客 464

leetcode-面试题刷题-Tree-1(C++)

给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 思路: 二叉树尝试用递归,分类是前,中,后序哪个的应用 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * ...

mark_GJ的博客 271

串的匹配KMP

1、详解 http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 2、主字符串的子字符串位置 include <stdio.h> #include <stdlib.h> #include <string.h> #define STRING_INIT_SIZE 100 //串初始长度 int Index(char *S, char

qq_43699776的博客 232
上一篇: Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
下一篇: Leetcode C++《每日一题》20200625 139. 单词拆分
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值