【LEETCODE】70、字符匹配1023 Camelcase Matching

最近做leetcode总感觉自己是个智障,基本很少有题能自己独立做出来,都是百度。。。

不过终于还是做出了一题。。。而且速度效率还可以

哎,加油吧,尽量锤炼自己

package y2019.Algorithm.str.medium;

import java.util.ArrayList;
import java.util.List;

/**
 * @Auther: xiaof
 * @Date: 2019/11/21 09:00
 * @Description:  1023. Camelcase Matching
 *
 * A query word matches a given pattern if we can insert lowercase letters to the pattern word so that it equals the query.

 * (We may insert each character at any position, and may insert 0 characters.)
 * Given a list of queries, and a pattern, return an answer list of booleans,
 * where answer[i] is true if and only if queries[i] matches the pattern.

 *
 * Example 1:
 * Input: queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FB"
 * Output: [true,false,true,true,false]
 * Explanation:
 * "FooBar" can be generated like this "F" + "oo" + "B" + "ar".

 * "FootBall" can be generated like this "F" + "oot" + "B" + "all".

 * "FrameBuffer" can be generated like this "F" + "rame" + "B" + "uffer".

 * Example 2:
 * Input: queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBa"
 * Output: [true,false,true,false,false]
 * Explanation:
 * "FooBar" can be generated like this "Fo" + "o" + "Ba" + "r".

 * "FootBall" can be generated like this "Fo" + "ot" + "Ba" + "ll".

 * Example 3:
 * Input: queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FoBaT"
 * Output: [false,true,false,false,false]
 * Explanation:
 * "FooBarTest" can be generated like this "Fo" + "o" + "Ba" + "r" + "T" + "est".

 *
 */
public class CamelMatch {

    /**
     * myself
     * Runtime: 0 ms, faster than 100.00% of Java online submissions for Camelcase Matching.

     * Memory Usage: 34.7 MB, less than 100.00% of Java online submissions for Camelcase Matching.

     * @param queries
     * @param pattern
     * @return
     */
    public List solution(String[] queries, String pattern) {

        List res = new ArrayList<>();
        //比较所有的字符
        //1.长度pattern肯定是不比queriers长的
        for (int i = 0; i < queries.length; ++i) {
            res.add(match(queries[i], pattern));
        }

        return res;
    }

    public boolean match(String des, String pattern) {
        //1.顺序比较字符,当所有的字符被des匹配成功,那么就ok,并且不能存在大写的字符留存
        int index1 = 0, index2 = 0;
        while (index1 < des.length() && index2 < pattern.length()) {
            char desc1 = des.charAt(index1);
            char p1 = pattern.charAt(index2);
            //如果匹配成功,那么直接进入下一个字符
            if (desc1 == p1) {
                index1++;
                index2++;
            } else {
                //如果第一个匹配失败
                if (desc1 - 'a' >= 0 && desc1 - 'z' ) {
                    //如果是小写
                    //2.如果是小写,那么进入下一个字符
                    index1++;
                } else {
                    //1.判断字符是否小写,如果是大写
                    //如果大写字符不匹配,那么就直接false
                    return false;
                }
            }
        }
        //如果判断剩下的是否有大写
        while (index1 < des.length()) {
            char desc1 = des.charAt(index1);
            if (desc1 - 'a' >= 0 && desc1 - 'z' ) {
                //如果是小写
                //2.如果是小写,那么进入下一个字符
                index1++;
            } else {
                return false;
            }
        }

        return index2 >= pattern.length();
    }

//    ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"]
//            "FB"
    public static void main(String[] args) {
        String[] s = {"FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"};
        String pattern = "FB";
        CamelMatch fuc = new CamelMatch();

        fuc.solution(s, pattern);

    }

}

Original: https://www.cnblogs.com/cutter-point/p/11940992.html
Author: cutter_point
Title: 【LEETCODE】70、字符匹配1023 Camelcase Matching

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713204/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Transformer学习

    模型结构 Encoder Encoder是有N=6层的一个整体。是这6层按顺序走下来的一个整体。每层有两个子层。分别是多头自注意力和全连接前馈网络。对于每个子层,先采用残差连接,后…

    技术杂谈 2023年6月21日
    0102
  • 【Python-虚拟环境】项目的启动,从隔离开发环境开始

    在实际项目开发中,通常会根据自己的需求去下载各种相应的框架或库。 但是,每个项目使用的框架或库并不一样,甚至版本也不一样。这样如果直接在 Python环境中安装各种各样的库,就会造…

    技术杂谈 2023年7月24日
    083
  • java多线程回顾3:线程安全

    1、线程安全问题 关于线程安全问题,有一个经典案例:银行取钱问题。 假设有一个账户,有两个线程从账户里取钱,如果余额大于取钱金额,则取钱成功,反之则失败。 下面来看下线程不安全的程…

    技术杂谈 2023年7月11日
    080
  • Saga是什么? 分布式事务的挑战

    前言 虽然一直说想写一篇关于Saga模式,在多次尝试后不得不承认这玩意儿的仿制代码真不是我一个菜鸟就能完成的,所以还是妥协般地引用现成的Eventuate Tram Saga框架(…

    技术杂谈 2023年5月31日
    0100
  • 【证券从业】金融基础知识-第四章 股票01

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为三篇文章记录消化 posted @2022-06-05 00:25 陈景中 阅读…

    技术杂谈 2023年7月10日
    078
  • Idea运行HelloWorld与Idea自用设置

    Java运行机制 编译型compile:操作系统等需要速度的会使用编译型去做(全局翻译再运行) 解释型:网页,服务器脚本等对速度没有要求的使用解释型做(运行一句解释一句) 程序运行…

    技术杂谈 2023年6月21日
    0120
  • GRU

    在神经网络发展的过程中,几乎所有关于LSTM的文章中对于LSTM的结构都会做出一些变动,也称为LSTM的变体。其中变动较大的是门控循环单元(Gated Recurrent Unit…

    技术杂谈 2023年7月11日
    094
  • gnomeshell扩展命令行开启和关闭

    #关闭gnome-shell-extension-tool -d 扩展名 #开启gnome-shell-extension-tool -e 扩展名 例如:gnome-shell-e…

    技术杂谈 2023年7月24日
    080
  • wasm示例 js canvas 动画示例

    3d迷宫移动:https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/A_basic_ray-caster C:\d…

    技术杂谈 2023年5月31日
    093
  • phpcms安装

    【快速安装开始】 下载解压phpcms,复制安装文件到站点目录”/opt/html”里,给予权限(官网无法访问了,所以下载地址需自行寻找上传) cd /us…

    技术杂谈 2023年7月11日
    081
  • spring-boot-导出excel-xlsx 文件损坏

    maven的pom文件处理 ①将resource标签配置如下 src/main/resources true bootstrap.yml **/*.xml **/excelTemp…

    技术杂谈 2023年7月25日
    079
  • Wireshark抓包实例诊断TCP连接问题

    转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 前文论述了TCP基础知识,从本节开始,通过TCP抓包实例…

    技术杂谈 2023年5月31日
    095
  • ES6 Template Strings(转)

    Strings in JavaScript have been historically limited, lacking the capabilities one might e…

    技术杂谈 2023年5月30日
    092
  • resttemplate的ReadTimeout和ConnectTimeout

    问题描述:今天,在做微服务开发中,A服务区调用B服务,获取数据做导出excel操作。A服务出现了”java.net.SocketTimeoutException: Re…

    技术杂谈 2023年5月31日
    096
  • 文件的压缩与打包

    文件的压缩与打包 常用文件拓展名 *.tar.gz tar程序打包的文件,并且经过gzip的压缩 *.tar.bz2 tar程序打包的文件,并且经过bzip2的压缩 tar 命令,…

    技术杂谈 2023年7月11日
    067
  • 使用Aggregated API扩展你的kubernetes API

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年7月25日
    072
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球