У меня пять строк, как показано ниже,
ABBCCD
ABBDCD
ABBDCD
ABBECD
ABBDCD
все строки в основном одинаковы, за исключением четвертых символов.Но только персонаж, который появляется максимальное время, займет место.Например, здесь D был помещен 3 раза в четвертую позицию.Итак, последняя строка будет ABBDCD.Я написал следующий код, но он оказался менее эффективным с точки зрения времени.Потому что эту функцию можно вызывать миллион раз.Что я должен сделать, чтобы улучшить производительность?
Здесь changeString - строка, которую нужно сопоставить с другими 5 строками.Если любая позиция измененной строки не совпадает с остальными четырьмя, то найденный символ maxmum будет помещен в changeString.
len - длина строк, одинаковая для всех строк.
for (int i = 0; i < len;i++ )
{
String findDuplicate = string.Empty + changedString[i] + overlapStr[0][i] + overlapStr[1][i] + overlapStr[2][i] +
overlapStr[3][i] + overlapStr[4][i];
char c = findDuplicate.GroupBy(x => x).OrderByDescending(x => x.Count()).First().Key;
if(c!=changedString[i])
{
if (i > 0)
{
changedString = changedString.Substring(0, i) + c +
changedString.Substring(i + 1, changedString.Length - i - 1);
}
else
{
changedString = c + changedString.Substring(i + 1, changedString.Length - 1);
}
}
//string cleanString = new string(findDuplicate.ToCharArray().Distinct().ToArray());
}