मैं इस पर बहुत करीब हूं। मुझे कल डेवलपर द्वारा एक प्रश्न पूछा गया था कि अगर मैं इसे देख सकूं।तारों की सूची में एक सामान्य स्ट्रिंग खोजें
मुझे नज़दीक लगता है, लेकिन मुझे लगता है कि यहां कुछ लोग भी चुनौती की सराहना करेंगे और मैं हार गया हूं।
अगर मैं एक List<string>
जो निम्नलिखित सदस्य हैं है:
आज
सोमवार
मंगलवार
बुधवार
मैं एक वापसी स्ट्रिंग प्राप्त करना चाहते हैं day
क्योंकि यह में सबसे बड़ी आम स्ट्रिंग है। यह स्थिति और स्ट्रिंग की लंबाई के बावजूद किया जाना चाहिए, बस तारों की मेज में सबसे बड़ी लंबाई सामान्य स्ट्रिंग को ढूंढना चाहते हैं।
मेरे प्रयास बुरी तरह एक सा विफल रहा है, मेरे द्वारा चुने गए:
सोमवार - मंगलवार
सोमवार - बुधवार
और फिर प्रत्येक के बीच एक Intersect
किया था। जाहिर है यह कई स्ट्रिंग्स लौटाएगा, हालांकि Monday - Wednesday
के लिए आपको nday
मिलते हैं क्योंकि यह वही पत्र है जो सामान्य है।
यहाँ मेरी कोड है:
List<string> strs = new List<string>();
strs.Add("Monday");
strs.Add("Tuesday");
strs.Add("Wednesday");
var v = strs.SelectMany((day, i) => strs.Select((day2, j) => new
{
iDay = i,
Day = day,
iDay2 = j,
Day2 = day2
})).Where(x => x.iDay != x.iDay2).Select(x => new string(x.Day.Intersect(x.Day2).ToArray()));
किसी एक अच्छा और साफ समाधान है?
नोट
यह अगर वहाँ एक आम स्ट्रिंग नहीं है LINQ
होने की जरूरत नहीं है null
या रिक्त स्ट्रिंग लौटाने।
मेरे विचार में, एक अच्छा और साफ समाधान में विशाल लैम्ब्डा अभिव्यक्तियां शामिल नहीं होंगी। और अनिवार्य रूप से लिंक शामिल नहीं होगा। –
कोई आम स्ट्रिंग नहीं होने पर परिणाम क्या है? जैसे बॉब, फ्रेड, मैक्स? या सोमवार, मंगलवार, बिल? यानी सूची में सभी वस्तुओं के लिए एक ही चरित्र के समान नहीं है? –
@IlyaKogan LINQ होना आवश्यक नहीं है, यह सिर्फ मेरा दृष्टिकोण था - इसे टैग किया गया क्योंकि मैंने इस सवाल में उपयोग किया है। – LukeHennerley