यह सही कहना मुश्किल है। मूल रूप से, मेरे पास एक सूची है, और मुझे एक स्ट्रिंग वापस प्राप्त करने की आवश्यकता है जो वर्णानुक्रम की उस सूची में अंतिम होगी। उदाहरण के लिए:

अगर मेरे पास सूची थी:

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

मुझे एक स्ट्रिंग वापस प्राप्त करने की आवश्यकता होगी जो वर्णानुक्रम में आगे होगी, उदाहरण के लिए "tf"

1
Christian Stewart 14 नवम्बर 2011, 00:54
आपको कुछ चाहिए alphabetically higher then 'test'? क्या आप उन्हें चार में परिवर्तित नहीं कर सकते हैं और एक को चारकोड में जोड़ सकते हैं,
 – 
TJHeuvel
14 नवम्बर 2011, 01:14
"परीक्षण" "टीएफ" से पहले होगा।
 – 
John Saunders
14 नवम्बर 2011, 01:17

3 जवाब

सबसे बढ़िया उत्तर

यह थोड़ा हैकी जवाब है, लेकिन मुझे उम्मीद है कि इससे मदद मिलती है। मान लें कि आपके तार एक क्रमबद्ध सूची में हैं, मेरे पास एक छोटा "त्वरित और गंदा" है - विधि जो वर्णमाला क्रम में अगला आइटम उत्पन्न करती है:

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";
 }
1
Fischermaen 14 नवम्बर 2011, 01:14
दिलचस्प जवाब। मुझे यह कोशिश करने दो :)
 – 
Christian Stewart
14 नवम्बर 2011, 01:21

आप किस भाषा में नहीं कहते हैं?

अधिकांश भाषाओं में सरणियों के लिए एक प्रकार का कार्य होता है, जो वर्णानुक्रम में क्रमबद्ध होता है। बस क्रमबद्ध करें और फिर सरणी के अंतिम तत्व का चयन करें।

0
Kae Verens 14 नवम्बर 2011, 00:58
मुझे पता है कि कैसे छाँटना है, लेकिन मुझे एक नई स्ट्रिंग बनाने की ज़रूरत है जो कि सरणी के लोगों की तुलना में वर्णानुक्रम में अधिक होगी ...
 – 
Christian Stewart
14 नवम्बर 2011, 01:10

यदि आप हमेशा एक स्ट्रिंग चाहते हैं जो सभी मौजूदा तारों के बाद वर्णानुक्रम में "आखिरी" है, तो यह काम करना चाहिए;)

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
danielfishr 14 नवम्बर 2011, 01:28
"परीक्षण" के बाद शब्द है - वर्णानुक्रम में - "टेसु" और आपके नमूने की तरह "टेस्टज़" नहीं।
 – 
Fischermaen
14 नवम्बर 2011, 02:02