在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度

本文介绍如何使用C++编程找出文本中与给定查询query以相同顺序连续出现的最长字母序列的长度。通过字符串处理和比较,可以有效地找到这一序列。

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

给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如, query为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。请注意程序效率。
#include <iostream>
#include <string>
using namespace std;
int main()
 {
	//预定义字符串长度,手动输入字符串
	char query[100];//定义字符串query长度
	char text[1000];//定义字符串text长度
	printf("请输入query队列字符串:");
	gets(query);//读取字符串query
	printf("请输入text队列字符串:");
	gets(text);//读取字符串text
	int query_len=strlen(query);//得到字符串query的长度
	int text_len=strlen(text);//得到字符串text的长度
	//给定字符串内容
	/*
	string query="acbabc";//定义字符串query
	string text="acaccbabb";//定义字符串text
	int query_len=query.length();//得到字符串query长度
	int text_len=text.length();//得到字符串text的长度
	*/
	/*从query字符串第一个字母开始,当有字母与text字符串
	相同时,比较接下来的字符是否相同,若相同,计数加一,
	否则跳出当前循环,寻找下一个相同字符*/
	int i = 0, j = 0,result=0;
	for(i = 0; i <query_len; i++)
		{
		 for(j = 0; j <text_len; j++)
			{
			 if(query[i] == text[j])
				{
				 int u=i;
  				 int v=j;
				 int count = 0;
				 while(query[u] == text[v])
				      {
						count++;
						u++;
						v++;
						if((u>=query_len)||(v>=text_len))
						break;
					   }
				if(result<count)
				result=count;
				}
			}
		}
    cout<<"result="<<result; 
	getchar();
	return 0;
 }
小弟目前刚刚入手c++学习,为了以后找工作做准备,有不足之处请各位多多指教,共同学习,一起进步~!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值