【华为OD题库-060】增强的strstr-java

题目

c语言有一个库函数: char* strstr(const char * haystack,const char *needle),实现在字符串 haystack 中查找第一次出现字符串needle的位置,如果未找到则返回null。
现要求实现一个strstr的增强函数,可以使用带可选段的字符串来模糊查询,与strstr一样返回首次查找到的字符串位置。可选段使用"[]“标识,表示该位置是可选段中任意一个字符即可满足匹配条件。比如"a[bc]“表示可以匹配"ab"或"ac”
注意目标字符串中可选段可能出现多次
输入描述
与strstr函数一样,输入参数是两个字符串指针,分别是源字符串和目标字符串
输出描述
与strstr函数不同,返回的是源字符串中,匹配子字符串相对于源字符串地址的偏移(从0开始算),如果没有匹配返回-1。补充说明:源字符串中必定不包含”[]”,目标字符串中"[]"必定成对出现,且不会出现嵌套。
输入的字符串长度在[1,100]之间。
示例1:
输入:
abcd
b[cd]
输出
1
说明
相当于是在源字符串中查找bc或者bd, bc子字符串相对于abcd的偏移是1

思路

简单题,直接利用java的正则表达式查找即可

题解

package hwod;import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class StrongenStr {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str1 = sc.nextLine();String str2 = sc.nextLine();System.out.println(strstr(str1,str2));}private static int strstr(String originStr, String targetStr) {Pattern pattern = Pattern.compile(targetStr);Matcher matcher = pattern.matcher(originStr);return matcher.find() ? matcher.start() : -1;}
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/197535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1. 了解继承的概念,掌握派生类的定义。2. 掌握派生类构造方法的执行过程。3. 掌握方法的重载与覆盖。4. 掌握抽象类的概念及上转型对象的使用

1、定义一个抽象类Shape,类中封装属性name指定图形名称,定义用于求面积的抽象方法。定义3个子类:圆形类Circle、梯形类Trapezoid和三角形类Triangle,都继承Shape类,子类中各自新增属性,定义构造方法、设置属…

无人机语音中继电台 U-ATC118

简介 甚高频无线电中继通讯系统使用经过适航认证的机载电台连接数字网络传输模块,通过网络远程控制无缝实现无人机操作员与塔台直接语音通话。无人机操作员可以从地面控制站远程操作机载电台进行频率切换、静噪开关、PTT按钮,电台虚拟面板与真实面板布局…

网络可信空间|探讨现有网络安全中可信空间建设问题,以及建设可信空间的关键要素

网络可信空间的构建能力,基于不同的等级或程度统一面临的一个共同的挑战,即是成本和管理的压力的问题。因此,根据业务用户环境的不同情况,构建适合的等级可信空间,同时保障在不同等级可信空间的安全互通是关键策略。在…

重塑生成式AI时代数据战略,亚马逊云科技re:Invent大会Swami主题演讲

re:lnvent 2023 Swami Sivasubramanian主题演讲,数据、AI和人类共进共生,重塑生成式AI时代的数据战略。 赋能人才加持生成式AI必备能 生成式AI创新中心:解决生成式AI工程化挑战。 Amazon Bedrock平台PartyRock:生成式AI应用程序实…

【Filament】Filament环境搭建

1 前言 Filament 是一个实时物理渲染引擎,用于 Android、iOS、Linux、macOS、Windows 和 WebGL 平台。该引擎旨在提供高效、实时的图形渲染,并被设计为在 Android 平台上尽可能小而尽可能高效。Filament 支持基于物理的渲染(PBR)&…

AtCoder Beginner Contest 331

感觉和cf div3差不多。 A - Tomorrow 签到&#xff0c;D和M是一年有D月M天&#xff0c;输入ymd输出ym[d1]&#xff0c;如果d1>D了显然要m&#xff0c;模拟即可。 #include <bits/stdc.h> //#define int long long #define fr first #define se second #define endl …

前端知识笔记(三十)———前端需要掌握的技术有哪些方面

上一篇文章说了些前端这个岗位在整个项目开发过程中的重要性&#xff0c;那么&#xff0c;下面我们来谈谈前端在做项目时需要掌握的技术有哪些方面&#xff1f; 前端开发需要掌握的技术包括以下几个方面&#xff1a; 1.HTML&#xff1a;HTML是网页的基础骨架&#xff0c;是网…

拼多多电商平台API接口,获取拼多多实时准确数据,获取产品销量、价格,sku图片及sku库存数据演示

拼多多商品详情API接口的作用是让开发者可以获取拼多多平台上特定商品的详细信息&#xff0c;包括商品的标题、价格、图片、规格、参数以及店铺信息等。通过这个接口&#xff0c;开发者可以轻松地获取商品的原始数据&#xff0c;便于进行数据分析、价格比较、爬取等操作。这为电…

大数据之HBase(二)

Master详细架构 位置&#xff1a;namenode实现类&#xff1a;HMaster组成 负载均衡器&#xff1a;通过meta了解region的分配&#xff0c;通过zk了解rs的启动情况&#xff0c;5分钟调控一次分配平衡元数据表管理器&#xff1a;管理自己的预写日志&#xff0c;如果宕机&#xff…

JavaWeb(六)

一、Maven的常用命令 maven的常用命令有:compile(编译)、clean(清理)、test(测试)、package(打包)、install(安装)。 1.1、compile(编译) compile(编译)的作用有如下两点: 1、从阿里云下载编译需要的jar包&#xff0c;在本地仓库也能看到下载好的插件(远程仓库配置的是阿里…

寻找两个有序数组的中位数算法(leetcode第4题)

题目描述&#xff1a; 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,3], nums2 [2] 输出&…

【数值计算方法(黄明游)】函数插值与曲线拟合(二):Newton插值【理论到程序】

​ 文章目录 一、近似表达方式1. 插值&#xff08;Interpolation&#xff09;2. 拟合&#xff08;Fitting&#xff09;3. 投影&#xff08;Projection&#xff09; 二、Lagrange插值1. 拉格朗日插值方法2. Lagrange插值公式a. 线性插值&#xff08;n1&#xff09;b. 抛物插值&…

JavaWeb 前端工程化

前端工程化是使用软件工程的方法来单独解决前端的开发流程中模块化、组件化、规范化、自动化的问题,其主要目的为了提高效率和降低成本。 前端工程化实现技术栈 前端工程化实现的技术栈有很多,我们采用ES6nodejsnpmViteVUE3routerpiniaaxiosElement-plus组合来实现 ECMAScri…

Rust语言项目实战(九 - 完结) - 胜利与失败

回顾 在前面的章节中,我们已经实现了这个游戏中大部分的模块和功能,我们可以指挥我们的战机左右移动,并发射子弹;我们还创造了一堆的侵略者,从屏幕上方缓缓降落,试图到达屏幕的底部。 本章中,我们将对游戏的输赢作出最后的裁决,到底是我们的保卫者英勇无敌,还是侵略…

glibc下的tpmalloc

文章目录 1、内存布局2、操作系统内存分配的相关函数2.1 Heap 操作相关函数2.2 Mmap 映射区域操作相关函数 3、ptmalloc的实现原理3.1 Main_arena 与 non_main_arena3.2 chunk 结构3.3 空闲 chunk 容器的组织形式3.3.1 small bin3.3.2 Large bins3.3.3 Unsorted bin3.3.4 Fast …

如何使用Cloudreve搭建本地云盘系统并实现随时远程访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

关于1panel面板中OpenResty配置证书的格式问题探究

文章目录 说明ssl证书格式CRT&PEM转换方法linux系统win系统 问题&#xff1a; ASN.1 编码错误补充&#xff1a;DER和pem编码格式 说明 armbian中使用OpenResty进行反向代理&#xff0c;配置ssl证书&#xff0c;但是由于和官网申请的证书内容格式内容不太一样&#xff0c;所…

深入浅出理解kafka

1.Kafka简介 Kafka 本质上是一个 MQ&#xff08;Message Queue&#xff09;&#xff0c;使用消息队列的优点&#xff1a; 解耦&#xff1a;允许独立的扩展或修改队列两边的处理过程。可恢复性&#xff1a;即使一个处理消息的进程挂掉&#xff0c;加入队列中的消息仍然可以在系…

利用 FormData 实现文件上传、监控网路速度和上传进度(前端原生,后端 koa)

利用 FormData 实现文件上传 基础功能&#xff1a;上传文件 演示如下&#xff1a; 概括流程&#xff1a; 前端&#xff1a;把文件数据获取并 append 到 FormData 对象中后端&#xff1a;通过 ctx.request.files 对象拿到二进制数据&#xff0c;获得 node 暂存的文件路径 前端…

编程语言中常量(Constant)简介

编程语言中常量&#xff08;Constant&#xff09;简介 编程语言中&#xff0c;常量&#xff08;Constant&#xff09;是程序中固定不变的值&#xff0c;它们在定义后不能被修改。“不能被修改”意味着在常量的生命周期内&#xff0c;它的值是不可变的&#xff0c;你不能再给它赋…