看见一帖子面试题,求字符串中出现次数最多的字符,并获得其第一次出现的位置,题目很简单,我用一个128的数组,记录字符出现的次数,运用位图的思想解决此问题。
代码如下:
#include <stdio.h> #include <string.h> #define MAX 128 int bitmap[MAX]; char find(int *x, char *str) { int i = 0, max = 0; char p; memset(bitmap, 0, sizeof(bitmap)); for (; i < strlen(str); i++) bitmap[str[i] - '0'] += 1; for (i = 0; i < MAX; i++) if (bitmap[i] > max) { max = bitmap[i]; p = i + '0'; } for (i = 0; i < strlen(str); i++) if (str[i] == p) { *x = i; break; } return p; } int main(void) { char *str = "aabbccaaBBBBcccccBbbbcccccb"; int x; printf("%c %d", find(&x, str), x + 1); return 0; }