本文主要是介绍【找子序列“happy”,可不连续型,双指针】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
不是每段相遇都有个美好的结局,阿米娅。有很多故事戛然而止,有很多故事让人辗转反侧,另一些......最后只能变成一声长长的叹息。在没有尽头的荒原上,人们相逢,然后走散,但在错身而过的那个瞬间......没有人知道,我们是否该郑重地道出再见”给你若干段相遇,请找出其中美好的结局
输入
第一行包含一个整数n,表示一共有n段相遇
之后n行每行一个只包含小写字母的字符串,表示一段相遇。
一个存在子序列为“happy”的相遇有美好的结局
子序列:在原来数组中任意划掉一个或者多个元素,可以构造出的序列。
字符串的大小不超过300,n不超过300
输出
按原顺序输出所有的有美好结局的相遇,一段相遇占一行
保证至少存在一段相遇有美好的结局
样例输入 复制
5
happy
khapapy
amiya
logos
hhaappyy
样例输出 复制
happy
khapapy
hhaappyy
思路:
1.只要按照从左到右的顺序有h,a,a,p,y这几个字母存在就输出字符串;
2.先将"happy"以字符串形式存起来,采用双指针算法---->>>>i遍历给出字符串,j遍历"happy"字符串
#include <bits/stdc++.h>
using namespace std;
int main()
{int t;cin>>t;while(t--){string s1;cin>>s1;string s2("happy"); //给s2初始化赋值int i,j,n1;n1=s1.size();int flag=0;for(i=0,j=0;i<n1;i++){if(s1[i]==s2[j]){j++;}//必须将输出语句写在j++后面(若写在前面,在"hanppy"中的'y'位于给出字符串末尾时,i继续+1,会超出范围,就过不了if(j>=5){cout<<s1<<endl;break;}}}return 0;}
这篇关于【找子序列“happy”,可不连续型,双指针】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!