Ошибка с выводом элементов в консоль

Задача такова: у меня есть функция public static string Longest(string s1, string s2) принимающая в качестве аргументов две строки. Мне нужно объединить эти две строки и удалить дубликаты. Например из двух строк aretheyhere и yestheyarehere должно получиться: aehrsty. Я бы мог воспользоваться уже имеющимися функциями, которые удаляют дубликаты, но проблема в том, что если одинаковых символов четное количество, предположим, у нас 4 буквы а, эти функции удалят все буквы а, так как это 2 дубликата, мне же нужно сделать так, чтобы удалились только 3 буквы и осталась только одна. Для этого я придумал алгоритм, который позволяет реализовать это:

public static string Longest(string s1, string s2)
{
   StringBuilder result = new StringBuilder();
   string strUnion = s1 + s2;
   char[] str = strUnion.ToCharArray();
   Array.Sort(str);
   for (int i = 0; i < str.Length; i++)
   {
      if (i == str.Length - 1)
          break;
      if (str[i] != str[i + 1])
          result.Append(i);
   }
   return result.ToString();

public static void Main()
{
   string s1 = "aretheyhere";
   string s2 = "yestheyarehere";
   Console.WriteLine(Longest(s1, s2));
}

Объяснение алгоритма: для начала мы объединяем две строки в одну, затем преобразуем эту строку в массив, далее мы сортируем этот массив по алфавиту, затем мы проходимся по каждому элементу отсортированного массива и сверяем элемент с элементом впереди стоящем, то есть у нас есть элемент с индексом 0, мы проверяем совпадает ли этот элемент с элементом под индексом 1. Если да, то мы идем дальше и проверяем совпадает ли элемент под индексом 1 с элементом под индексом 2, если нет, то элемент с индексом 1 мы записываем в переменную result и так продолжается пока мы не пройдем весь массив. Вроде все хорошо, но есть одна проблема. В переменную result записываются индексы элементов, а не сами элементы. Получается так: 11014181921. Не знаю, как это исправить, прошу помощи. Заранее спасибо.


Ответы (0 шт):