求字串連續字元數量

沉舟道人發表於2024-05-05

試寫一個函式,計算字串 s中最大連續相同的字元個數。例如,若s 為"aaabbbb",則返回值為4;若s為"abcde",則返回值為1。

函式原型:int max_same_char( char s)

/**
 * file name:ConstanChar_Count.c
 * author   : liaojx2016@126.com
 * date     : 2024-04-08
 * function : Count the max of constant char num
 * note     : None
 * CopyRight (c)   2024  liaojx2016@126.com  Right Reseverd
 *
**/
#include <stdio.h>
#include<string.h>
/**
 *
 * func name      : max_same_char
 * function       : Count max of string's constant char num
 * parameter      : 
 *                      @p :Address pointed to a string
 * Return val      : maxinum of string's constant char num
 * note            : None
 * author          : liaojx2016@126.com
 * date            : 2024-04-08
 * version         : V1.0
 * modify history  : None
 *
**/
int max_same_char( char *p )
{
    int cnt=1;		//記錄連續字元數量
    int max=1;		//記錄連續字元數量最大值
    //遍歷字串
    while(*p) {
        if(*p==*(p+1)) {
            //此時當前字元與下一個字元相同,字元數量+1
            cnt++;
        }
        else {
            //此時當前字元與下一個字元不相同,比較 cnt與 max,並將較大值賦給 max
            max = (max<cnt)? cnt:max;
            //比較完成之後cnt重新開始計數
            cnt=1;
        }
        p++;	//地址偏移
    }

    return max;
}

int main(int argc, char const *argv[])
{
    char*p="fghfghddddddddfghjdd";
    //scanf("%s",p);
    printf("the string length is %d\n",strlen(p));
    printf("the constant same char num max is %d\n",max_same_char(p));

    return 0;
}

相關文章