2011-11-13 36 views
1

很难说这个权利。基本上,我有一个列表,我需要找回一个字符串,这将是该字母顺序列表中的最后一个。例如:获取最高字母顺序的字符串

如果我有名单:

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

我需要得到一个字符串,将在排列第二,例如“TF”

+0

什么语言? :) –

+0

你想要的东西'按字母顺序高于'测试'?不能将它们转换为字符并将其添加到charcode中, – TJHeuvel

+0

“测试”将在“tf”之前。 –

回答

1

这是一个有点hacky的答案,但我希望有所帮助。假设你有你的字符串在排序列表中,我有一个豆蔻“快速和肮脏的” - 方法是按字母顺序未来产生项:

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

如果你总是想一个字符串,它是按字母顺序“最后“毕竟现有的字符串,这应该工作;)

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

“测试”后面的单词是 - 按字母顺序排列 - “tesu”而不是“testz”,就像您的示例中一样。 – Fischermaen

相关问题