BestCoder Round #48 ($) wyh2000 and a string problem

本文介绍了一个有趣的字符串子序列判断问题,特别关注于处理连续的字符v,并将其转换为w的情况。通过具体的输入输出样例说明了解决方案的设计思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

wyh2000 and a string problem

 
 Accepts: 417
 
 Submissions: 767
 Time Limit: 2000/1000 MS (Java/Others)
 
 Memory Limit: 131072/65536 K (Java/Others)
问题描述
青年理论计算机科学家wyh2000在教小学生一些基础的字符串概念。
定义一个字符串s的子序列为将s中一些元素删掉得到的字符串。可以删掉全部元素,可以不删,也可以只删一些。
他还教了小学生如何判断一个串是不是另一个串的子序列。比如给你一个串,要求判断wyh是不是它的子序列,那么你只需要找一个w,找一个y,再找一个h,使得wy前面,yh前面即可。
有一天小学生拿着一个串问他“wyh是不是这个串的子序列?”
但是wyh2000有重度近视眼,如果字符串中有一段连续的v(至少两个),那么他会把它看成一个w。例如,字符串vvv会被看成w,字符串vvwvvv会被看成www,字符串vwvv会被看成vww。
请问wyh2000会怎么回答这个问题?
输入描述
第一行为数据组数T(1T105)。
接下来T行,每行一个字符串,表示小学生拿来问wyh2000的串。
总串长不超过3145728。只包含小写字母。
hack数据字符串长度不超过100000。
输出描述
对于每组数据,如果wyh2000会把wyh看成该串的子串,那么输出一行Yes,否则输出一行No
输入样例
4
woshiyangli
woyeshiyangli
vvuuyeh
vuvuyeh
输出样例
No
Yes
Yes

No

#include<stdio.h>
#include<string.h>
int main()
{
	int t,len1,num,j,len2,k;
	char str1[100001],str2[100001];
	scanf("%d",&t);
	while(t--)
	{
		num=0;
		j=0;
		k=0;
		scanf("%s",str1);
		len1=strlen(str1);
		for(int i=0;i<len1;i++)
		{
			if(str1[i]=='v')
			    num++;
			else
			{
				if(num>=2)
				    str2[j++]='w';
                else 
                    str2[j++]=str1[i];
				num=0; 
			} 
		}
		len2=strlen(str2);
		for(int i=0;i<len2;i++)
		{
			if(str2[i]=='w'&&k==0)
			    k=1;
            if(str2[i]=='y'&&k==1)
                k=2;
            if(str2[i]=='h'&&k==2)
                k=3;
		} 
		if(k==3)
		    printf("Yes\n"); 
        else   
            printf("No\n");
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值