C语言_输出字符串中最长的一个大小写字母组合

首先读一个字符,判断该字符是否为字母:

如果该字符为字母,则存入字母缓冲区,如果该字母后面为结束符,则记录该字母组合的长度、起始和结束下标。

如果该字符不是字母,但该字符的前一个字符是字母,则记录该字母组合的长度、起始和结束下标。清空字母缓冲区。

如果该字符不是字母且其前一个字符也不是字母,则读取下一个字符。

#include <stdio.h>
#define SIZE 50
struct stack{
	int charCount;
	int indexStart;
	int indexEnd;
};
int main(){
	int i,j,k,wordCount,num,max,ptr;
	char strBuffer[SIZE];
	struct stack wordStack[SIZE];
	char str[]="tom$ww@yyz&z??ABCD**  BabyBaby ()";
	printf("%s\n",str);
	for(i=0;i<SIZE;i++){
		wordStack[i].charCount=0;
		wordStack[i].indexStart=0;
		wordStack[i].indexEnd=0;
	}	
	i=0;j=0;wordCount=0;
	while(str[i]!='\0'){
		if(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z'){
			strBuffer[j]=str[i];
			i++;j++;
			if(str[i]=='\0'){
				wordStack[wordCount].charCount=j;
				wordStack[wordCount].indexEnd=i-1;
				wordStack[wordCount].indexStart=i-j;
				wordCount++;
			}		
		}else if(i>=1&&str[i-1]>='A'&&str[i-1]<='Z'||str[i-1]>='a'&&str[i-1]<='z'){		
			wordStack[wordCount].charCount=j;
			wordStack[wordCount].indexEnd=i-1;
			wordStack[wordCount].indexStart=i-j;
			wordCount++;
			for(k=0;k<SIZE;k++){
				strBuffer[k]='\0';
			}
			i++;j=0;
		}else{
			i++;
			j=0;
		}
	}
	max=0;ptr=0;
	for(i=0;i<wordCount;i++){
		num=wordStack[i].charCount;
		if(num>max){
			max=num;
			ptr=i;
		}
	}	
	i=wordStack[ptr].indexStart;
	j=wordStack[ptr].indexEnd;
	for(k=i;k<=j;k++){
		printf("%c",str[k]);
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值