算法學習十一----連續最長的數字串

寫一個函數,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出連續最長的數字串,並把這個串的長度返回,
並把這個最長數字串付給其中一個函數參數outputstr所指內存。
例如:"abcd12345ed125ss123456789"的首地址傳給intputstr後,函數將返回9,
outputstr所指的值爲123456789
算法思路如下:
1、逐個字符遍歷該字符串,當還沒有到達字符串的結束時,判斷當前字符是否是數字,若是數字,則進行第二步,否則繼續遍歷
2、繼續判斷下一字符,直到當前字符不是數字,並記錄下數字字符的個數,與之前的數字字符做比較,如果當前數字個數較多,則更新最大值

算法僞代碼如下:

while not to the end
     reset tempSum
     if '0'<= *c <= '9'
          then while not to the end and '0' <= *c <= '9'
               add tempSum

               go to next char
     if tempSum > maxCount
          then update maxCount
     go to next char

C++實現

int ContinuMaxNumStr(const char *c)
{
    int maxCount = 0;
    int tempSum = 0;

    //while not to the end
    while(*c != '\0')
    {
        //reset tempSum
        tempSum = 0;
        //if '0'<= *c <= '9'
        if(*c>='0' && *c<='9')
        {
            //then while not to the end and '0' <= *c <= '9'
            while((*c != '\0') && (*c>='0' && *c<='9'))
            {
                //add tempSum
                ++tempSum;

                //go to next char
                ++c;
            }
            //if tempSum > maxCount
            if(tempSum > maxCount)
            {
                //then update maxCount
                maxCount = tempSum;
            }
        }
        //go to next char
        ++c;
    }

    return maxCount;
}


發佈了90 篇原創文章 · 獲贊 45 · 訪問量 71萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章