program to find first non repeating character in a string c# - 3 ways

In c# you want to create logic that if a string like "abcabd" is passed to a method then it should return first non repetitive character from string like in above it should return "c".

Below is three way to get the first non-repeating(distinct) character from the string -
  • First using IndexOf and LastIndexOf method of string type.
  • Using for loop and comparing operator.
  • Using Linq GroupBy method.
If we are talking about performance ( like execution time, complexity etc ) and arranging the above three ways in ascending order of execution time then sequence must be as below -

Using for loop and comparing operator >> using IndexOf and LastIndexOf method of string type >> Using Linq GroupBy method.

Find the first non-repeated character in a string - IndexOf Method


public char firstNonRepetitive(string inputString)
{
    char firstDistinctChar = ' ';
    for (int i = 0; i < inputString.Length; i++)
    {
        if (inputString.IndexOf(inputString[i], i + 1) == -1)
        {
            firstDistinctChar = inputString[i];
            break;
        }
    }
    return firstDistinctChar;

}

IndexOf and LastIndexOf method with nallable char type  


//nullable char type
public char? firstNonRepetitive(string inputString)
{
    for (int i = 0; i < inputString.Length; i++)
    {
        if (inputString.IndexOf(inputString[i]) == inputString.LastIndexOf(inputString[i]))
            return inputString[i];
    }
    return null;

}


Get the first non-repeating(distinct) character from the string - for loop


public char firstNonRepetitive(string inputString)
{
    int nextOccurrence = 0;
    char firstDistinctChar = ' ';
    for (int i = 0; i < inputString.Length; i++)
    {
        nextOccurrence = 0;
        for (int j = (i + 1); j < inputString.Length; j++)
        {
            if (inputString[i] == inputString[j])
                nextOccurrence++;
        }
        if (nextOccurrence == 0)
        {
            firstDistinctChar = inputString[i];
            break;
        }
    }
    return firstDistinctChar;

}


Find First Non Repeated Character in String - LINQ - Code


public char firstNonRepetitive(string inputString)
{
   char firstDistinctChar = ' ';

   firstDistinctChar = inputString.GroupBy(x => x).Where(x => x.Count() == 1).Select(x => x.Key).First();

   return firstDistinctChar;
}



public char firstNonRepetitive(string inputString)
{
   char firstDistinctChar = ' ';

   firstDistinctChar = (from chr in inputString group chr by chr into charGroups where charGroups.Count() == 1 select charGroups.Key).First();

   return firstDistinctChar;
}


Input - "abcabd"


string duplicateCharString = "abcabd";
firstNonRepetitive(duplicateCharString);

Output - "c"