最长公共单词

题目要求:

有A、B两个字符串,输出字符串A、B的最长公共单词。

解题思路:

处理字符串,使用strtok()分割单词,存入数组中;
使用、用strcmp()比较两个单词是否相等;
使用strlen()求单词长度。

实现代码:

int main()
{
	char a[] = "world, hello!";//待比较的第一个字符串
	char b[] = "123,第二个字符串,hello.";//待比较的第二个字符串
	char c[] = " !,.";//字符串的分隔符组成的串
	
	//存放a、b字符串的单词的数组
	char* aa[sizeof(a)/sizeof(a[0])],* bb[sizeof(b) / sizeof(b[0])];
	char* s1,* s2;//临时指向单词头的指针
	unsigned int len = 0;//记录最长单词长度
	
//分割并存储字符串a
	int i = 0;
	for (s1 = strtok(a, c); s1 != NULL; s1 = strtok(NULL, c))
	{
		aa[i++] = s1;
	}
//分割并存储字符串b
	int j = 0;
	for (s2 = strtok(b, c); s2 != NULL; s2 = strtok(NULL, c))
	{
		bb[j++] = s2;
	}
//对比每个相等单词长度
	char *r = nullptr;//r指向最长的公共单词
	for(int k = 0;k<i;k++)
		for(int h = 0;h<j;h++)
			if (strcmp(aa[k],bb[h]) == 0)
				if (strlen(aa[k]) >= len)
				{
					r = aa[k];
					len = strlen(aa[k]);
				}
//输出结果
	cout << len << endl;
	cout << r << endl;
}

运行结果
在这里插入图片描述

函数解释:

分割字符串:strtok()
返回在 strToken中指向下一个标记的指针。 当未找到其他标记时,它们返回 NULL 。 通过为返回标记后出现的第一个分隔符替换 NULL 字符,每个调用修改 strToken 。

char *strtok(
   char *strToken,
   const char *strDelimit 
);
/*
strToken 
字符串包含一个标记或一个以上的标记。
strDelimit 
分隔符的设置。
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曦樂~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值