मैं ऐसे परिदृश्य के माध्यम से काम करने की कोशिश कर रहा हूं जिसे मैंने पहले नहीं देखा है और इसे ठीक से कार्यान्वित करने के लिए एल्गोरिदम के साथ आने के लिए संघर्ष कर रहा हूं। मेरी समस्या का हिस्सा उचित शब्दावली का एक आलसी याद है। मेरा मानना है कि मुझे जो चाहिए वह मानक "संयोजन" समस्या का एक भिन्नता है, लेकिन मैं वहां से अच्छी तरह से हो सकता था।कैरेक्टर रिप्लेसमेंट के साथ स्ट्रिंग संयोजन
परिदृश्य एक उदाहरण स्ट्रिंग "100"
, कि एक o
(लोअर केस ओ) के लिए उन 0
(शून्य) पात्रों में से एक बाहर स्वैप x
के सभी संयोजनों का उत्पादन (यह x
कॉल) को देखते हुए।
"100"
"10o"
"1o0"
"1oo"
यह अलग-अलग लंबाई तार अलग समर्थन करने के लिए की आवश्यकता होगी: तो, "100"
के सरल उदाहरण के लिए, मैं इस उत्पादन उम्मीद करेंगे 0
अक्षरों की संख्या, लेकिन मान लें किके 5 से अधिक उदाहरण कभी नहीं होंगे।
मैं इस बहुत ही सरल एल्गोरिथ्म कि "100"
की मेरी नमूने के लिए काम करता है लेकिन अब और अधिक जटिल कुछ भी के लिए अलग हो जाता है/है:
public IEnumerable<string> Combinations(string input)
{
char[] buffer = new char[input.Length];
for(int i = 0; i != buffer.Length; ++i)
{
buffer[i] = input[i];
}
//return the original input
yield return new string(buffer);
//look for 0's and replace them
for(int i = 0; i != buffer.Length; ++i)
{
if (input[i] == '0')
{
buffer[i] = 'o';
yield return new string(buffer);
buffer[i] = '0';
}
}
//handle the replace-all scenario
yield return input.Replace("0", "o");
}
मैं एक सता लग रहा है कि प्रत्यावर्तन यहाँ मेरे दोस्त हो सकता है, लेकिन मैं कर रहा हूँ मुझे यहां सशर्त तर्क को शामिल करने के तरीके को समझने के लिए संघर्ष करना है।
तुम सिर्फ शून्य के पदों की एक स्थानीय सरणी है नहीं कर सकते और फिर शून्य के साथ एक द्विआधारी पैटर्न में बदलाव की गणना और द्विआधारी अंकों के रूप में छोटे ओ: मेरे एल्गोरिथ्म इस प्रकार हो सकता है? –
@MOehm यकीन नहीं है कि मैं आपके मतलब का पालन करता हूं, क्या आप एक कार्यान्वयन और/या अतिरिक्त विवरण प्रदान कर सकते हैं? –