​力扣解法汇总1023. 驼峰式匹配

这篇具有很好参考价值的文章主要介绍了​力扣解法汇总1023. 驼峰式匹配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣

描述:

如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。)

给定待查询列表 queries,和模式串 pattern,返回由布尔值组成的答案列表 answer。只有在待查项 queries[i] 与模式串 pattern 匹配时, answer[i] 才为 true,否则为 false

示例 1:

输入:queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FB"
输出:[true,false,true,true,false]
示例:
"FooBar" 可以这样生成:"F" + "oo" + "B" + "ar"。
"FootBall" 可以这样生成:"F" + "oot" + "B" + "all".
"FrameBuffer" 可以这样生成:"F" + "rame" + "B" + "uffer".

示例 2:

输入:queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBa"
输出:[true,false,true,false,false]
解释:
"FooBar" 可以这样生成:"Fo" + "o" + "Ba" + "r".
"FootBall" 可以这样生成:"Fo" + "ot" + "Ba" + "ll".

示例 3:

输出:queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBaT"
输入:[false,true,false,false,false]
解释: 
"FooBarTest" 可以这样生成:"Fo" + "o" + "Ba" + "r" + "T" + "est".

提示:文章来源地址https://www.toymoban.com/news/detail-419933.html

  1. 1 <= queries.length <= 100
  2. 1 <= queries[i].length <= 100
  3. 1 <= pattern.length <= 100
  4. 所有字符串都仅由大写和小写英文字母组成。

解题思路:

* 解题思路:
* isMatch来判断对应的字符是否满足,用两个int值index1和index2记录位置。
* 如果chars1[index1]==chars2[index2],则index1++,index2。
* 否则index1++。等于说只挪动如果chars1中的位置,如果这个位置是大些字母,则直接返回false。
* 遍历完chars1后,如果发现还有未遍历的chars2,则说明没有覆盖全字符串pattern,则false。

代码:

public class Solution1023 {

    public List<Boolean> camelMatch(String[] queries, String pattern) {
        List<Boolean> list = new ArrayList<>();
        Arrays.stream(queries).forEach(s -> list.add(isMatch(s, pattern)));
        return list;
    }

    public Boolean isMatch(String querie, String pattern) {
        char[] chars1 = querie.toCharArray();
        char[] chars2 = pattern.toCharArray();
        int index1 = 0;
        int index2 = 0;
        while (index1 < chars1.length && index2 < chars2.length) {
            char queriChar = chars1[index1];
            if (queriChar == chars2[index2]) {
                index1++;
                index2++;
                continue;
            }
            index1++;
            if (queriChar >= 'A' && queriChar <= 'Z') {
                return false;
            }
        }
        if (index2 < chars2.length) {
            return false;
        }
        while (index1 < chars1.length) {
            char queriChar = chars1[index1];
            if (queriChar >= 'A' && queriChar <= 'Z') {
                return false;
            }
            index1++;
        }
        return true;
    }
}

到了这里,关于​力扣解法汇总1023. 驼峰式匹配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2235.两整数相加:19种语言解法(力扣全解法)

    力扣题目链接:https://leetcode.cn/problems/add-two-integers/ 给你两个整数  num1 和 num2 ,返回这两个整数的和。   示例 1: 示例 2:   提示: -100 = num1, num2 = 100 时间复杂度 O ( 1 ) O(1) O ( 1 ) 空间复杂度 O ( 1 ) O(1) O ( 1 ) AC代码 C++ C Python Python2 Java C# Javascript Ruby Swift Go Scala Kotlin Rust PHP

    2024年02月12日
    浏览(27)
  • 力扣--268丢失的数字(三种解法)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1: 输入:nums = [3,0,1] 输出:2 解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢

    2024年02月04日
    浏览(24)
  • 力扣70. 爬楼梯(动态规划 Java,C++解法)

    Problem: 70. 爬楼梯 由于本题目中第i层台阶只能由于第 i- 1 层台阶和第 i-2 层台阶走来,所以可以联想到动态规划,具体如下: 1.定义多阶段决策模型:对于每一上台阶看作一种状态; 2.定义状态转移方程:int[] dp = new int[n + 1] 用于记录第i个台阶可以走到的走法 ;dp[i] = dp[i -

    2024年01月20日
    浏览(31)
  • 汇总区间(C++解法)

    给定一个   无重复元素  的  有序  整数数组  nums  。 返回  恰好覆盖数组中所有数字  的  最小有序  区间范围列表  。也就是说, nums  的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于  nums  的数字  x  。 列表中的每个区间范围  [a,b]  应

    2024年02月07日
    浏览(24)
  • 【leetcode 力扣刷题】移除链表元素 多种解法

    题目链接:203.移除链表元素 题目内容: 理解题意:就是单纯的删除链表中所有值等于给定的val的节点。上一篇博客中介绍了链表的基础操作,在删除链表中节点时,需要注意的是头节点: 如果没有虚拟头节点,那么对头节点的删除需要做不同的处理,head = head-next; 如果有

    2024年02月12日
    浏览(35)
  • ​LeetCode解法汇总2490. 回环句

    https://github.com/September26/java-algorithms 力扣 句子  是由单个空格分隔的一组单词,且不含前导或尾随空格。 例如, \\\"Hello World\\\" 、 \\\"HELLO\\\" 、 \\\"hello world hello world\\\"  都是符合要求的句子。 单词  仅  由大写和小写英文字母组成。且大写和小写字母会视作不同字符。 如果句子满足下

    2024年02月12日
    浏览(32)
  • ​LeetCode解法汇总2544. 交替数字和

    https://github.com/September26/java-algorithms 给你一个正整数  n  。 n  中的每一位数字都会按下述规则分配一个符号: 最高有效位  上的数字分配到  正  号。 剩余每位上数字的符号都与其相邻数字相反。 返回所有数字及其对应符号的和。 示例 1: 示例 2: 示例 3: 提示: 1 = n

    2024年02月16日
    浏览(25)
  • ​LeetCode解法汇总LCP 50. 宝石补给

    GitHub - September26/java-algorithms: 算法题汇总,包含牛客,leetCode,lintCode等网站题目的解法和代码,以及完整的mode类,甚至链表代码生成工具都有提供。 欢迎各位勇者来到力扣新手村,在开始试炼之前,请各位勇者先进行「宝石补给」。 每位勇者初始都拥有一些能量宝石, 

    2024年02月07日
    浏览(31)
  • ​LeetCode解法汇总2679. 矩阵中的和

    https://github.com/September26/java-algorithms 给你一个下标从  0  开始的二维整数数组  nums  。一开始你的分数为  0  。你需要执行以下操作直到矩阵变为空: 矩阵中每一行选取最大的一个数,并删除它。如果一行中有多个最大的数,选择任意一个并删除。 在步骤 1 删除的所有数字

    2024年02月16日
    浏览(33)
  • ​LeetCode解法汇总344. 反转字符串

    https://github.com/September26/java-algorithms 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组  s  的形式给出。 不要给另外的数组分配额外的空间,你必须 原地修改输入数组 、使用 O(1) 的额外空间解决这一问题。 示例 1: 示例 2: 提示: 1 = s.length = 105

    2024年02月14日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包