[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 ...
随机推荐
- nacos底层原理
Nacos 为什么选择NacosNacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮 ...
- Listener是什么?有什么作用?
Listener是指Servlet中的监听器. Listener可以对ServletContext对象.HttpSession对象.ServletRequest对象进行监听.
- Canvas将图片转换成base64形式展示的常见问题及解决方案
导航1:https://blog.csdn.net/weixin_30668887/article/details/98822699 导航2:https://stackoverflow.com/que ...
- 当一个线程进入某个对象的一个 synchronized 的实例方 法后,其它线程是否可进入此对象的其它方法?
如果其他方法没有 synchronized 的话,其他线程是可以进入的. 所以要开放一个线程安全的对象时,得保证每个方法都是线程安全的.
- SSM-learning
架构流程图: 第一步:建立spring框架: 包括:建立所需要的dao层,sevice层和controller层和实体类,建立spring配置文件,配置自动扫描bean AccountDao: @Re ...
- java中的generate
流generate(Supplier s)返回无限顺序无序流,其中每个元素由提供的供应商生成.这适用于生成恒定流,随机元素流等. public class Flow { public static v ...
- 外部晶振的使用原因与内部RC振荡器的使用方法 _
原因一 早些年,芯片的生产制作工艺也许还不能够将晶振做进芯片内部,但是现在可以了.这个问题主要还是实用性和成本决定的. 原因二 芯片和晶振的材料是不同的,芯片 (集成电路) 的材料是硅,而晶体则是 ...
- Simulink仿真时间、步长、精度和解法器设置
在Simulink模型中Configuration Parameters里的Solver页设置仿真时间.步长.精度和解法器. 一.仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时 ...
- 浅谈Nodejs应用的主文件index.js的组成部分
前言 Node妹子的问世,着实让我们前端攻城狮兴奋了一把,尤其本屌听说Javascript可以写服务端后,兴奋的像是看到了二次元萝莉的胖子...(●'◡'●).呃哼...YY先到这里,原谅本屌是个二次 ...
- 检查浏览器支持Webp
什么是Webp? Webp 是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8.根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这 ...