2011-11-13 8 views
1

この権利を言うのは難しいです。基本的に、私はリストを持っており、そのアルファベット順のリストで最後の文字列を取得する必要があります。例えば:私はリストを持っていた場合アルファベット順の高い文字列を取得

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

私は、アルファベット順で次のだろう文字列を取り戻すために例えば「TF」

+0

どのような言語ですか? :) –

+0

アルファベット順に「テスト」より高いものが必要ですか?あなたはそれらをcharに変換し、charcodeに1を加えてください。 – TJHeuvel

+0

"test"は "tf"の前になります。 –

答えて

1

これはちょっとハッキーな答えですが、そのことが役立つことを願っています。あなたは常にアルファベット順で文字列をしたい場合は、最後の「

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

興味深い答えです。私はそれを試してみましょう:) –

+0

私は少し問題があります..ここでそれが終わるものです:http://screensnapr.com/v/bI2nyb.png - それはうまく始まり、その後同じことを何度も繰り返し終わります。何か案は? –

0

そうしないが必要になりますどの言語で言う?

ほとんどの言語には、アルファベット順のソート機能があります。ソートを行い、配列の最後の要素を選択します。

+0

申し訳ありませんが、C#... –

+0

http://msdn.microsoft.com/en-us/library/system.array.sort(v=vs.71).aspx –

+0

私はソートする方法を知っていますが、私は新しい文字列を作成する必要があります。これは、配列内の文字列よりもアルファベット順に大きくなります。 –

0

:アルファベット順に次の項目を生成し、「速くて汚い」-methodを使用すると、ソートされたリストに、あなたの文字列を持っていると仮定すると、私はリッテを持っています"すべての既存の文字列の後、これが動作するはずです;)

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

"test"の後の単語は、アルファベット順に - "tesu"であり、あなたのサンプルのように "testz"ではありません。 – Fischermaen

関連する問題