アルゴリズム練習_004最初の重複しない文字を検索


タイトル:1つの文字列に1回だけ表示される最初の文字を見つけます.abaccdeffが入力されると、bが出力される
#include <stdio.h>
#define MaxSize 255


int FirstDChar(char a[], int n)
{
	int i=0, j=n;
	//flag                   0
	int 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;
	else
		return i;
}


int main(void)
{
	char a[MaxSize];
	int len, n;
	
	//           
	scanf("%s", a);
	len = strlen(a);
	
	n = FirstDChar(a, len-1);
	if (!n)
		printf("  
"); else printf("%c
", a[n]); return 0; }