[AcWing 778] 字符串最大跨距

点击查看代码
#include<iostream>
using namespace std;
string s, s1, s2;
int main()
{
char c;
while (cin >> c, c != ',') s += c;
while (cin >> c, c != ',') s1 += c;
cin >> s2;
if (s.size() < s1.size() || s.size() < s2.size()) puts("-1");
else {
int l = 0;
while (l + s1.size() <= s.size()) {
int k = 0;
for ( ; k < s1.size(); k ++) {
if (s[l + k] != s1[k]) break;
}
if (k == s1.size()) break;
l ++;
}
int r = s.size() - s2.size();
while (r >= 0) {
int k = 0;
for ( ; k < s2.size(); k ++) {
if (s[r + k] != s2[k]) break;
}
if (k == s2.size()) break;
r --;
}
l += s1.size() - 1;
if (l >= r) puts("-1");
else printf("%d\n", r - l - 1);
}
return 0;
}
- 不使用 find() 函数的情况下,匹配 s1 和 s2 需要用 l 和 r 枚举 s1 和 s2 起点的可能性,找到 s1 和 s2 的起点在 s 中的位置
- 枚举 s1 的起点 l 时,从 0 开始向后枚举,枚举 s2 的起点 r 时,从 s.size() - s2.size() 开始向前枚举
- 边界情况1:s 的长度比 s1 的长度或者 s2 的长度小,输出 "-1"
- 边界情况2:s1 的终点位置 l ( l += s1.size() - 1 把 l 移到了 s1 的终点位置 ) 大于等于 s2 的起点位置 r
[AcWing 778] 字符串最大跨距的更多相关文章
- AC日记——字符串最大跨距 openjudge 1.7 26
26:字符串最大跨距 总时间限制: 1000ms 内存限制: 65536kB 描述 有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10.想检测S1和S2是否同时在S中 ...
- OpenJudge计算概论-字符串最大跨距
/*====================================================================== 字符串最大跨距 总时间限制: 1000ms 内存限制: ...
- AcWing 841. 字符串哈希
//快速判断两次字符串是不是相等 #include<bits/stdc++.h> using namespace std ; typedef unsigned long long ULL; ...
- [AcWing 777] 字符串乘方
点击查看代码 #include<iostream> using namespace std; string str; int main() { while (cin >> st ...
- [AcWing 776] 字符串移位包含问题
点击查看代码 #include<iostream> #include<algorithm> using namespace std; string a, b; int main ...
- [AcWing 771] 字符串中最长的连续出现的字符
点击查看代码 #include<iostream> using namespace std; string str; int n; int main() { cin >> n; ...
- noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30
T21:单词替换 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替 ...
- NOI 1.7编程基础之字符串(35题)
01:统计数字字符个数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一行字符,统计出其中数字字符的个数. 输入 一行字符串,总长度不超过255. 输出 ...
- acwing 835. Trie字符串统计
地址 https://www.acwing.com/problem/content/description/837/ 维护一个字符串集合,支持两种操作: “I x”向集合中插入一个字符串x: “Q ...
随机推荐
- kafka的message格式是什么样的?
一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成 header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成 ...
- 我对arguments.callee的理解
基本理解: 你怎么看待一个函数呢?又如何看待一个函数对象呢?函数和Function之间的关系到底是什么?我觉得理解这些对理解arguments.callee有所帮助. 先说说auguments.cal ...
- JVM内存模型小结
JVM运行时的数据区域划分图如下,该图是JVM内存模型最主要的内容. 从图中可以看出来,JVM将内存主要划分为五个部分:程序计数器.Java虚拟机栈.本地方法栈.Java堆和方法区.这些被划分为用途不 ...
- Effective Java —— 多字段下考虑使用建造者模式构建实例
本文参考 本篇文章参考自<Effective Java>第三版第二条"Consider a builder when faced with many constructor pa ...
- Java_lambda表达式之"stream流学习,Map学习,collect学习,Conllectors工具类学习"
Lambda表达式学习 对List<Integer> userIdList = UserList.stream().map(User::getUserId).collect(Collect ...
- servlet中的ServletContext对象
ServletContext官方叫Servlet上下文.服务器会为每一个Web应用创建一个ServletContext对象.这个对象全局唯一,而且Web应用 中的所有Servlet都共享这个对象(在整 ...
- cpu设计过程
一款CPU是如何设计出来的? 前面一段,我们了解了芯片的制造过程,也就是如何从沙子中提取硅.把硅切成片,在片上通过离子注入实现PN结.实现各种二极管.三极管.CMOS管.从而实现千万门级大规模集成电路 ...
- AWS 6R
"The 6 R's": 6 Application Migration Strategies "The 6 R's": 6 Application Migra ...
- 微信小程序登录鉴权流程图
- java中什么叫覆盖Override?请给实例
5.覆盖(Override) 马克-to-win:方法的覆盖(Override)是指子类重写从父类继承来的一个同名方法(参数.返回值也同). 例1.5.1-- class AAAMark_to_win ...