Получите строку в алфавитном порядке - PullRequest
1 голос
/ 14 ноября 2011

Трудно сказать это правильно. По сути, у меня есть список, и мне нужно вернуть строку, которая будет последней в этом списке в алфавитном порядке. Например:

Если бы у меня был список:

{ "01", "0a2", "test" }

Мне нужно вернуть строку, которая будет следующей в алфавитном порядке, например, "tf"

Ответы [ 3 ]

1 голос
/ 14 ноября 2011

Это немного хакерский ответ, но я надеюсь, что это поможет. Предполагая, что у вас есть строки в отсортированном списке, у меня есть метод «быстро и грязно», который генерирует следующий элемент в алфавитном порядке:

var items = new System.Collections.Generic.SortedList<string, string>();

items.Add("01", "01");
items.Add("02a", "02a");
items.Add("test", "test");

var nextItem = items.Last().Key;

int pos = nextItem.Length - 1;
while (pos >= 0)
{
   if ((nextItem[pos] != 'z') && (nextItem[pos] != 'Z'))
   {
      nextItem = nextItem.Substring(0, pos - 1) +  Convert.ToChar(Convert.ToInt32(nextItem[pos]) + 1) + nextItem.Substring(pos + 1);
      break;
    }
    pos--;
 }

 if (pos == -1)
 {
    nextItem += "a";
 }
0 голосов
/ 14 ноября 2011

Если вам всегда нужна строка, которая в алфавитном порядке «последняя» после всех существующих строк, это должно сработать;)

var words = new []{"01","0a2","test"}; 

int maxLength = words.ToList().Max(x => x.Length);

string newWord ="";

for(int i=0;i<maxLength +1;i++){

  newWord+= "z";            

}
0 голосов
/ 14 ноября 2011

Вы не говорите на каком языке?

большинство языков имеют функцию сортировки для массивов, которая сортирует по алфавиту. просто выполните сортировку, затем выберите последний элемент массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...