Задача состояла в том что бы пронумеровать буквы алфавита во входной строке начиная с "a = 1" и найти слово с наибольшим значением(не используя Linq, ток collections.generic и system). Работает четко, но у меня есть подозрения что эти тройные вложенные циклы ваще не круто, хотел бы альтернативу(если есть) ну и вообще на плохие вещи указать.
using System;
using System.Collections.Generic;
namespace CW_Sort_words
{
public class Kata
{
private const string Alphabet = "abcdefghijklmnopqrstuvwxyz";
public static string Higt(string s)
{
string alphabet = Alphabet;
char[] arrAlphabet = alphabet.ToCharArray();
string[] word = s.Split(' ');
int[] value = new int [word.Length];
for (int i = 0; i < word.Length; i++)
{
char[] letter = word[i].ToCharArray();
for (int j = 0; j < letter.Length; j++)
{
for (int b = 0; b < arrAlphabet.Length; b++)
{
if(letter[j] == arrAlphabet[b])
{
if (b == 0) //проверка т.к. отсчет букв идет с 1, а не 0.
{
value[i] += 1;
break;
}
else
{
value[i] += b + 1;
break;
}
}
}
}
}
return word[MaxIndex(value)];
}
//ищем индекс наибольшего значения в массиве
private static int MaxIndex(int[] array)
{
int max = int.MinValue;
int index = 0;
for (int i = 0; i < array.Length; i++)
{
if (array[i] > max)
max = array[i];
}
for (int i = 0; i < array.Length; i++)
{
if (array[i] == max)
{
index = i;
break;
}
}
return index;
}
}
public static class Program
{
static void Main(string[] args)
{
string str = "man i need a taxi up to ubud";
Console.WriteLine(Kata.Higt(str)); //выведет taxi
}
}
}