1. 程式人生 > >[2013百度軟件研發筆試題] 求字符串中連續出現同樣字符的最大值

[2013百度軟件研發筆試題] 求字符串中連續出現同樣字符的最大值

方法 連續 軟件 其它 dsm 筆試面試 面試 完整 pre

題目完整描寫敘述為:用遞歸的方式實現一個求字符串中連續出現同樣字符的最大值。如aaabbcc,連續出現a的最大值為3,abbc,連續出現字符最大的值為2。


下面是我想出來的方法:

#include <iostream>
using namespace std;

#define MAX(a, b) (a) > (b) ?

(a) : (b) int Get(char *s, int n, int m) //字符指針, 當前最長串, max最長串 { if(*(s+1) == ‘\0‘) return MAX(n, m); if(*s == *(s+1)) return Get(s+1, n+1, m); return Get(s+1, 1, MAX(n, m)); } int main() { printf("%d\n", Get("abbc", 1, 1)); printf("%d\n", Get("aaabbcc", 1, 1)); getchar(); return 0; }


以及還有一種遞歸的方法:

#include <iostream>
using namespace std;

int Get(char *s)
{
    int ans = 0;
    char *t = s;
    if(*s == ‘\0‘)
        return ans;
    while(*s != ‘\0‘ && *t == *s)
        ans++, s++;
    t = s;
    int tmp = Get(t);
    return ans > tmp ? ans : tmp;
}

int main()
{
    printf("%d\n", Get("abbc"));
    printf("%d\n", Get("aaabbcc"));

    getchar();
    return 0;
}
不知道為什麽一定要是遞歸實現。。。

可能是要考察寫遞歸的能力吧。無所謂,反正筆試面試題都非常怪異就是了-.-

假設你有其它更好的方法,請賜教!


[2013百度軟件研發筆試題] 求字符串中連續出現同樣字符的最大值