分享

程序员面试攻略 5.3面试例题:第一个无重复字符

 shaobin0604@163.com 2006-10-23

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

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

 O(n)

************************************************************************/
#include <stdio.h>
#include <stdlib.h>

#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;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多