के साथ एनाग्राम एल्गोरिदम मुझे हाल ही में एक एल्गोरिदम तैयार करने के लिए कहा गया था जो जांचता है कि दो तार एक-दूसरे के आरेख हैं या नहीं। मेरा लक्ष्य अंतरिक्ष और समय की जटिलता को कम करना था, इसलिए मैं इस एल्गोरिदम के साथ आया:न्यूनतम जटिलता
- 26 तत्वों की एक सरणी बनाएं, प्रत्येक को शून्य से प्रारंभ किया गया है।
- पहली स्ट्रिंग को पार करें और प्रत्येक वर्ण के लिए, उस वर्ण से संबंधित सरणी तत्व को बढ़ाएं।
- दूसरी स्ट्रिंग को पार करें और प्रत्येक वर्ण के लिए, उस वर्ण से संबंधित सरणी तत्व को कम करें।
- सरणी पर स्कैन करें। यदि सभी तत्व 0 हैं, तो दो तार आरेख हैं।
हालांकि, इस एल्गोरिदम की समय जटिलता ओ (एन) है और मैं कम जटिलता वाले एल्गोरिदम के साथ नहीं आ सकता। क्या किसी को पता है?
मैं इसमें कोई विशेषज्ञ नहीं हूं, लेकिन ओ (एन) इस तरह से कुछ के लिए पहले से ही बहुत कुशल नहीं है? एकमात्र दोष जो मैं देख रहा हूं वह यह है कि आपको "über" और "rübe" को संभालने में कठिनाई होगी क्योंकि आप लैटिन वर्णों तक सीमित हैं (लेकिन यदि यह एक पूर्व शर्त है तो यह ठीक है)। – DarkDust