【找子序列“happy”,可不连续型,双指针】

2024-05-11 06:52

本文主要是介绍【找子序列“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”,可不连续型,双指针】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

uva 10131 最长子序列

题意: 给大象的体重和智商,求体重按从大到小,智商从高到低的最长子序列,并输出路径。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vect

POJ1631最长单调递增子序列

最长单调递增子序列 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.StringTokenizer;publ

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

day-50 求出最长好子序列 I

思路 二维dp,dp[i][h]表示nums[i] 结尾,且有不超过 h 个下标满足条件的最长好子序列的长度(0<=h<=k),二维数组dp初始值全为1 解题过程 状态转换方程: 1.nums[i]==nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h]+1) 2.nums[i]!=nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h-1

【C++】作用域指针、智能指针、共享指针、弱指针

十、智能指针、共享指针 从上篇文章 【C++】如何用C++创建对象,理解作用域、堆栈、内存分配-CSDN博客 中我们知道,你的对象是创建在栈上还是在堆上,最大的区别就是对象的作用域不一样。所以在C++中,一旦程序进入另外一个作用域,那其他作用域的对象就自动销毁了。这种机制有好有坏。我们可以利用这个机制,比如可以自动化我们的代码,像智能指针、作用域锁(scoped_lock)等都是利用了这种机制。

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD