高压气泵枪:程序员面试攻略 5.3面试例题:第一个无重复字符A

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 07:29:45

/************************************************************************
     5.3面试例题:第一个无重复字符
 请编写一个高效率的函数来找出字符串中的第一个无重复的字符。
 例如:
 
   "total"中的第一个无重复的字符是"o";

   "teeter"中的第一个无重复的字符是"r"。

 O(n)

************************************************************************/
#include
#include

#define MAX_CHAR 256

int firstNonRepeatedChar(char str[], char *c) {
 int i = 0;
 int j = 0;
 int p[MAX_CHAR];
 for (j = 0; j < MAX_CHAR; j++) {
  p[j] = 0;
 }
 
 while (str[i] != ‘\0‘) {
  p[str[i]]++;
  i++;
 }

 for (i = 0; str[i] != ‘\0‘; i++) {
  if (p[str[i]] == 1) {
   *c = str[i];
   return 1;
  }
 }
 return 0;
}

int main() {
 char str[] = "total";
 char a;
 if (firstNonRepeatedChar(str, &a) == 1) {
  printf("%c", a);
 } 
 return 0;
}