в С, это почти Алгоритм художника Шлемеля (не совсем O (n!), Но больше 0 (n2)).
Но превзойдет "лучшие" алгоритмыСтроки разумного размера, потому что O такой маленький.Это также может легко сказать вам местоположение первой неповторяющейся строки.
char FirstNonRepeatedChar(char * psz)
{
for (int ii = 0; psz[ii] != 0; ++ii)
{
for (int jj = ii+1; ; ++jj)
{
// if we hit the end of string, then we found a non-repeat character.
//
if (psz[jj] == 0)
return psz[ii]; // this character doesn't repeat
// if we found a repeat character, we can stop looking.
//
if (psz[ii] == psz[jj])
break;
}
}
return 0; // there were no non-repeating characters.
}
edit: этот код предполагает, что вы не имеете в виду последовательных повторяющихся символов.