[2013百度軟件研發筆試題] 求字符串中連續出現同樣字符的最大值
阿新 • • 發佈:2017-07-03
方法 連續 軟件 其它 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百度軟件研發筆試題] 求字符串中連續出現同樣字符的最大值