蓝桥联系题-子串简写

2024-04-11 15:12
文章标签 蓝桥 联系 子串 简写

本文主要是介绍蓝桥联系题-子串简写,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0子串简写 - 蓝桥云课 (lanqiao.cn)

思路一:暴力做法(能过80%)

从前向后依次遍历当找到一个以字符c1开头的字符,有多少c2能与之组成合法的子字符串,然后累加起来;

C++代码:

//暴力做法,能过80%
#include <iostream>
using namespace std;
typedef long long ll;
const int N=5e5+10;
int k;
char vis[N];
ll ans;
int a[N],b[N];
int main()
{// 请在此输入您的代码cin>>k;string s;cin>>s;char c1,c2;cin>>c1>>c2;int a1=0,b1=0;for(int i=0;i<s.size();i++){if(s[i]==c1) a[++a1]=i+1;if(s[i]==c2) b[++b1]=i+1;}for(int i=1;i<=a1;i++){for(int j=1;j<=b1;j++){if(b[j]-a[i]+1>=k)ans++;}}  cout<<ans;// for(int i=1;i<=cut;i++){//   cout<<vis[i]<<' ';// }return 0;
}

思路二:将每一个与c2相同的字符前面与它相隔距离大于等于k的所有与c1相同的字符数加起来(我语文表达能力不太行,如果没看懂多看几遍应该可以理解)

C++代码:

//ACcode
#include <iostream>
using namespace std;
typedef long long ll;
const int N=5e5+10;
ll k;
ll tmp,ans;int main(){cin>>k;string s;char c1,c2;cin>>s>>c1>>c2;for(int i=0,j=k-1;i<s.size();i++,j++){if(s[i]==c1) tmp++;//统计某一个c2前面有多少比它小k的c1if(s[j]==c2) ans+=tmp;//将每一个c2前面的c1的个数累加起来,即为答案}cout<<ans;return 0;
}

这篇关于蓝桥联系题-子串简写的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894436

相关文章

poj2406(连续重复子串)

题意:判断串s是不是str^n,求str的最大长度。 解题思路:kmp可解,后缀数组的倍增算法超时。next[i]表示在第i位匹配失败后,自动跳转到next[i],所以1到next[n]这个串 等于 n-next[n]+1到n这个串。 代码如下; #include<iostream>#include<algorithm>#include<stdio.h>#include<math.

poj3261(可重复k次的最长子串)

题意:可重复k次的最长子串 解题思路:求所有区间[x,x+k-1]中的最小值的最大值。求sa时间复杂度Nlog(N),求最值时间复杂度N*N,但实际复杂度很低。题目数据也比较水,不然估计过不了。 代码入下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstring

spoj705( 求不相同的子串个数)

题意:求串s的不同子串的个数 解题思路:任何子串都是某个后缀的前缀,对n个后缀排序,求某个后缀的前缀的个数,减去height[i](第i个后缀与第i-1 个后缀有相同的height[i]个前缀)。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstrin

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

每日一练7:简写单词(含链接)

1.链接 简写单词_牛客题霸_牛客网 2.题目 3.代码1(错误经验) #include <iostream>#include <string>using namespace std;int main() {string s;string ret;int count = 0;while(cin >> s)for(auto a : s){if(count == 0){if( a <=

PHP最长单一子串

<?php//方法一$s='abcccddddddcdefg';$max='';while($s!=''){$i=0; while($i<strlen($s) && $s[$i]==$s[0]) $i++;if ($i>strlen($max)){$max=substr($s,0,$i);} $s=substr($s,$i);}echo $m

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

MATLAB的fix(),floor()和ceil()函数的区别与联系

fix(x),floor(x)和ceil(x)函数都是对x取整,只不过取整方向不同而已。 这里的方向是以x轴作为横坐标来看的,向右就是朝着正轴方向,向左就是朝着负轴方向。 fix(x):向0取整(也可以理解为向中间取整) floor(x):向左取整 ceil(x):向右取整 举例: 4个数:a=3.3、b=3.7、c=-3.3、d=-3.7 fix(a)=3 fl

【UVA】10066-The Twin Towers(最长公共子串问题)

赤裸裸的最长公共子串问题,没什么好说的,注意的是,每组数据后面都有一个空行。 13996019 10066 The Twin Towers Accepted C++ 0.015 2014-08-06 00:34:53 #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using

找不同-第15届蓝桥省赛Scratch初级组真题第4题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第183讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。 第15届蓝桥杯省赛已于2024年8月24日落下帷幕,编程题一共有5题,分别如下: 猪八戒落地 游乐场 画西瓜 找不同 消