B2118 验证子串

验证子串

题目描述

输入两个字符串,验证其中一个串是否为另一个串的子串。

输入格式

两行,每行一个字符串。

输出格式

若第一个串 s 1 s_1 s1 是第二个串 s 2 s_2 s2 的子串,则输出(s1) is substring of (s2)

否则,若第二个串 s 2 s_2 s2 是第一个串 s 1 s_1 s1 的子串,输出(s2) is substring of (s1)

否则,输出 No substring

样例 #1

样例输入 #1

abc
dddncabca

样例输出 #1

abc is substring of dddncabca

样例 #2

样例输入 #2

aaa
bbb

样例输出 #2

No substring

提示

对于 100 % 100 \% 100% 的数据,字符串长度在 20 20 20 以内。

方法1

解题思路:

本题要求我们验证两个字符串之间的子串关系。我们可以使用字符串的 find 函数来判断一个字符串是否为另一个字符串的子串。find 函数会返回子串在主串中第一次出现的位置,如果找不到子串,则返回一个特殊值 string::npos

具体步骤如下:

  1. 读取两个字符串 s 1 s_1 s1 s 2 s_2 s2
  2. 使用 find 函数判断 s 1 s_1 s1 是否为 s 2 s_2 s2 的子串:
    • 如果 s2.find(s1) != string::npos,则 s 1 s_1 s1 s 2 s_2 s2 的子串,输出 (s1) is substring of (s2)
    • 否则,继续下一步。
  3. 使用 find 函数判断 s 2 s_2 s2 是否为 s 1 s_1 s1 的子串:
    • 如果 s1.find(s2) != string::npos,则 s 2 s_2 s2 s 1 s_1 s1 的子串,输出 (s2) is substring of (s1)
    • 否则,继续下一步。
  4. 如果以上条件都不满足,说明两个字符串之间没有子串关系,输出 No substring

C++代码实现:

#include <iostream>
#include <string>
using namespace std;int main() {string s1, s2;cin>>s1;cin>>s2;if (s2.find(s1) != string::npos) {cout << s1 << " is substring of " << s2 << endl;} else if (s1.find(s2) != string::npos) {cout << s2 << " is substring of " << s1 << endl;} else {cout << "No substring" << endl;}return 0;
}

代码解释:

  1. 使用 getline 函数读取两个字符串 s 1 s_1 s1 s 2 s_2 s2,每个字符串占一行。
  2. 使用 s2.find(s1) != string::npos 判断 s 1 s_1 s1 是否为 s 2 s_2 s2 的子串:
    • 如果条件成立,说明 s 1 s_1 s1 s 2 s_2 s2 的子串,使用 cout 输出 s1 is substring of s2
    • 否则,继续下一步。
  3. 使用 s1.find(s2) != string::npos 判断 s 2 s_2 s2 是否为 s 1 s_1 s1 的子串:
    • 如果条件成立,说明 s 2 s_2 s2 s 1 s_1 s1 的子串,使用 cout 输出 s2 is substring of s1
    • 否则,继续下一步。
  4. 如果以上条件都不满足,说明两个字符串之间没有子串关系,使用 cout 输出 No substring

复杂度分析:

  • 时间复杂度: O ( n × m ) O(n \times m) O(n×m),其中 n n n m m m 分别是两个字符串的长度。在最坏情况下,需要遍历两个字符串的所有可能的子串组合。
  • 空间复杂度: O ( 1 ) O(1) O(1)。只使用了常数级别的额外空间。

该解决方案利用了 find 函数快速判断子串关系,避免了手动实现子串匹配的过程。通过两次判断,我们可以确定两个字符串之间的子串关系,并输出相应的结果。

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

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

相关文章

Python并发与异步编程

Python的并发与异步编程是两个不同的概念&#xff0c;但它们经常一起使用&#xff0c;以提高程序的性能和响应能力。以下是对这两个概念的详细讲解&#xff1a; 并发编程 (Concurrency) 并发编程是指在程序中同时执行多个任务的能力。Python提供了几种实现并发的机制&#xff…

嵌入式进阶——RTC时钟

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 RTC时钟原理图PCF8563寄存器控制与状态寄存器 设备地址I2C环境初始化RTC寄存器数据读取RTC寄存器数据写入RTC闹钟设置RTC定时器设置…

2024.5.28晚训题解

提前预告&#xff0c;市赛初中组会考算法题&#xff0c;应该会有两道模板题 比如DFS BFS 二分 简单动态规划&#xff0c;虽然我们没学多久&#xff0c;但是模板题你还是要会写的 A题 编辑距离 动态规划 注意多组输入 #include<iostream> using namespace std; int dp[1…

9、C#【进阶】特性

特性 文章目录 1、特性概念2、自定义特性 Attribute3、特性的使用4、限制自定义特性的使用范围5、系统自带特性1、过时特性2、调用者信息特性3、条件编译特性4、外部dll包函数特性 1、特性概念 特性是一种允许我们向程序的程序集添加元数据的语言结构 它是用于保存程序机构信息…

【机器学习300问】103、简单的经典卷积神经网络结构设计成什么样?以LeNet-5为例说明。

一个简单的经典CNN网络结构由&#xff1a;输入层、卷积层、池化层、全连接层和输出层&#xff0c;这五种神经网络层结构组成。它最最经典的实例是LeNet-5&#xff0c;它最早被设计用于手写数字识别任务&#xff0c;包含两个卷积层、两个池化层、几个全连接层&#xff0c;以及最…

ansible批量漏洞升级openssh版本

1、ansible宿主机准备好环境&#xff0c;并写好hosts文件 [rootoxidized ansible]# cat hosts [all] 10.10.200.33 10.10.200.34 10.10.200.35跑playbook之前记得提前发送秘钥 ssh-copy-id 10.10.200.33/34/352、下载好安装包&#xff0c;然后编写yml [rootoxidized ansible]…

【实用的 IDEA 配置和操作技巧总结】

前置知识 IDEA的设置快捷键为ctrlalts键&#xff0c;后文介绍IDEA常见的配置就不再赘述这一点了。 基础配置 取消默认打开上次项目 日常开发都会打开不同的项目&#xff0c;初次安装IDEA之后&#xff0c;每次打开IDEA都会开启上一次启动的项目&#xff0c;所以我们需要进入设…

0基础学习Mybatis系列数据库操作框架——Mysql的Geometry数据处理之WKB方案

大纲 序列化反序列化完整TypeHandlerSQL XML完整XML Mapper测试代码代码 在《0基础学习Mybatis系列数据库操作框架——Mysql的Geometry数据处理之WKT方案》中&#xff0c;我们介绍WTK方案的优点&#xff0c;也感受到它的繁琐和缺陷。比如&#xff1a; 需要借助ST_GeomFromText…

element+ 引入图标报错 Failed to resolve import “@element-plus/icons-vue“ from “

element 引入图标报错 Internal server error: Failed to resolve import “element-plus/icons-vue” from “src\components\TimeLine.vue”. Does the file exist? 原因&#xff1a;element-plus需要单独引入 icons 文档 pnpm install element-plus/icons-vue之后就可以…

350种类型、10W+量级的API,企业应该怎么管?

忽如一夜春风来&#xff0c;万物皆可API。 在互联网时代&#xff0c;API无处不在&#xff1a;企业对外开放的数据、服务和业务能力&#xff0c;以API的形式提供给合作方&#xff1b;企业内部应用与应用、App与App之间的通信&#xff0c;通过API进行&#xff1b;甚至应用内部的…

php 连接sqlserver步骤

1.首先要确定使用的是sqlserver的哪个版本&#xff0c;比如sqlserver2012 2.确定服务器是64位还是32位的 3.确认一下使用php的哪个版本&#xff0c;比如php7.1 SQL Server 的 Microsoft PHP 驱动程序 Microsoft Drivers for PHP 支持矩阵 - PHP drivers for SQL Server | Mi…

Flutter 中的 CupertinoTabView 小部件:全面指南

Flutter 中的 CupertinoTabView 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;CupertinoTabView 是 Cupertino 组件库中的一个 widget&#xff0c;它用于创建 iOS 风格的标签页视图。这个 widget 通常与 CupertinoTabScaffold 结合使用&#xff0c;提供了一个底部带有…

怎么做好客户信息管理?

根据Forrester的调查表示&#xff0c;客户满意度的影响可能会使某些行业的收入每年增加高达 10 亿美元。而提升客户满意度的关键环节便是做好客户信息管理。但企业在进行客户信息管理中往往会遇到以下问题&#xff1a; 客户信息乱&#xff1a;客户信息存在各个 Excel表格、个人…

PMP报考条件怎么查询?如何判定自己是否符合条件?

PMP报考条件在PMI官网上就可以查询&#xff0c;PMP报考条件只需要符合项目管理培训经历和项目管理经验两个方面的要求即可&#xff0c;大家可以对照下方的规定判断自己是否符合PMP报名条件 PMP报考条件 以下是PMI&#xff08;中国&#xff09;官网对于PMP报名条件的规定&…

优秀的数据分析师需要具备哪些?

在数据驱动的时代&#xff0c;数据分析师的角色越来越被重视。本文将探讨优秀数据分析师必备的三大核心能力&#xff0c;并通过实际案例说明如何将这些能力转化为业务价值&#xff0c;帮助你在职业道路上更进一步。 在数字化迅速发展的今天&#xff0c;数据分析师扮演着极其重要…

ubuntu strace命令

strace 是 Linux 系统中的一个调试工具&#xff0c;用于跟踪并记录系统调用&#xff08;system calls&#xff09;和信号&#xff08;signals&#xff09;。在 Ubuntu 中&#xff0c;strace 命令可以帮助开发者和系统管理员了解一个程序在运行时如何与操作系统内核进行交互&…

TypeScript常见面试题第八节

题目三十六:什么是参数解构? 一、讲解视频 TS面试题三十六:什么是参数解构? 二、题目解析 本题目考察 ts 中的解构,解构是一种特殊语法,可以将对象解构到一个或多个局部变量中,可展开操作符相反,展开是允许将一个数组展开为另一个数组,或将一个对象展开为另一个对象,…

vue+antd实践:在输入框光标处插入内容

今天来看一个很简单的需求。 需求描述&#xff1a;在输入框光标处&#xff0c;插入指定的内容。 效果如下&#xff1a; 实现思路&#xff1a;刚开始还在想怎么获取光标的位置&#xff0c;但是发现所做的项目是基于vue3antd组件&#xff0c;那么不简单了嘛&#xff0c;只要调…

JAVA自制小游戏之推箱子

给家里孩子实现益智游戏开发,教会他怎么使用编程。以下是一个简单的推箱子游戏的Java实现,包含两个关卡: 这个程序包含两个关卡,每个关卡都是一个字符串表示的地图。游戏会提示玩家输入移动方向(WASD),然后根据输入的方向移动玩家。如果玩家成功将所有的箱子推到目标位…

配置物联网平台 保姆级教程

一、云平台配置&#xff08;我们这里使用阿里云&#xff09; 1、注册和登录 &#xff08;1&#xff09;找到云平台官网&#xff0c;点击右上角的注册登录&#xff0c;完成之后&#xff0c;进行实名认证&#xff0c;任选一种认证方式。 ​​​​​​​ 2、实例的开通和创建 …