查找围栏~算法实现!!!

/*
一串连续字符被称作围栏当且仅当它由间隔的‘|’和‘-’组成。
比如“|-|-|-|”或“-|-|”(引号仅供说明)。
注意“|-||-|”或者“--”不是围栏,因为每个都包含了两个或两个以上的相同连续字符。
给你一个字符串,请找出它的最长的一个可以称作围栏的子串长度。
Sample Input 
|||-||--|--|---|-||-|-|-|--||---||-||-||-|--||
    3 2  3  3    4       8 2 2  2  3  3   4 2
Sample Output
8
*/
#include <stdio.h>

int main()
{
	char a[100];
	int i=1,j=0,k=0,b;
	gets(a);
	puts(a);
			
	for(;a[j]!='\0';j++)
	{		
		if(a[j]==a[j+1]||a[j+1]=='\0')
		{
			if(k<i)k=i,b=j+1;//获取最大值和最大值地址(实际地址)
			i=1;//复位计数器
		}
		else i++;
	}

	printf("发现围栏最长的长度为:%d,地址为:%d ~ %d ",k,b-k+1,b);
	puts("");
	return 0;
}
|||-||--|--|---|-||-|-|-|--||---||-||-||-|--||
|||-||--|--|---|-||-|-|-|--||---||-||-||-|--||
发现围栏最长的长度为:8,地址为:19 ~ 26
Press any key to continue ...
    原文作者:查找算法
    原文地址: https://blog.csdn.net/pjwonline1/article/details/17207819
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞