求字符串中的最大字符平台

版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/88358361

1. 题目

编写程序:求字符串中的最大字符平台。
一个字符串中的任意一个子序列,若子序列中各字符均相同则被称为字符平台。
编程要求:输入任意一字符串S时,输出S中长度最大的所有字符平台的起始位置以及所含字符,注意字符平台有可能不止一个。
测试数据:AAZZZXYTTT

2. 分析

  1. 将字符串中所有字符,每一个子序列都看作一个字符串,存入一个二维数组,子序列的划分依据是连续各字符都相同
  2. 中间出现了一个strlen的问题可参考

3. 代码

#include <stdio.h>
#include <string.h>
#define max 20
int main(){
//	char s[max] = {"AAZZZYYTTT"};
	char s[max]
//	定义一个二维数组,将连续相同的字符,作为字符串存入a[i]中 
	char a[max][max];
//	len用来记录,所有字符串中的最大长度 
	int i,j,k,sum,temp,len=0;
	printf("请输入测试数据:");
	gets(s);
//	开始将所有的字符串,前后相同为一组存入二维数组中,二维数组a[i][j],i代表字符串的个数,j代表每个字符串中的字符的下标 
	a[0][0] = s[0];
	i = k = 1;
	j = 0;
	while(s[i]!='\0'){
		if(s[i]==s[i-1])	a[j][k++] = s[i];
		else{
			j++;
			k = 0;
			a[j][k++] = s[i];
		}
		i++;
	}
//计算出所有字符串中的最大长度,赋值给len 
	for(i=0;i<=j;i++){
		temp = strlen(a[i]);
		if(len<temp)	{
			len = temp;
		}
	}
//将二维数组中和最大长度相等的字符串输出 
	for(i=0;i<=j;i++){
		temp = strlen(a[i]);
		if(len==temp){
			sum = 0;
			for(k=0;k<i;k++)	sum = sum + strlen(a[k]);
			printf("字符串%s的起始位置为%d\n",a[i],sum+1);
		}
	}
	
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/nanhuaibeian/article/details/88358361
今日推荐