算法练习_004 查找第一个不重复的字符

来源:互联网 发布:json转实体类 编辑:程序博客网 时间:2024/04/29 06:06

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b

#include <stdio.h>#define MaxSize 255int FirstDChar(char a[], int n){int i=0, j=n;//flag数组记录该元素是否被比较过 初始值都为0int flag[MaxSize] = {0};while (i < j){//没有比较过 且两个字符相同 比较下一个字符//并标记为以比较 a[i] 和a[j]同时标记//防止连续出现多个相同的字符运行错误if (!flag[i] && a[i] == a[j]){flag[i] = flag[j] = 1;i++;j = n;}//没有比较过 且两个字符不同 j-- 继续比较else if (!flag[i] && a[i] != a[j]){j--;}//当前字符已经比较过 即该字符已经有字符与它相同了//比较下一个字符else{i++;j = n;}}//查看flag数组 找到第一个为0的字符的下标//表示没有被标记的for (i=0; i<=n; ++i)if(!flag[i])break;if (i > n)return 0;elsereturn i;}int main(void){char a[MaxSize];int len, n;//输入并获得字符串的长度scanf("%s", a);len = strlen(a);n = FirstDChar(a, len-1);if (!n)printf("没有\n");elseprintf("%c\n", a[n]);return 0;}



原创粉丝点击