string.length कॉलिंग स्ट्रिंग पर लंबाई की गणना करता है।
हाल ही में मुझे पता चला कि जावास्क्रिप्ट में string.length के लिए समय की जटिलता 0 (1) है। क्या कोई ऐसा है जो मुझे यह समझा सकता है कि लंबाई पाने के लिए हमें सभी पात्रों के माध्यम से जाने की आवश्यकता है और यदि स्ट्रिंग में n वर्ण हैं, तो यह n पर निर्भर होना चाहिए और हमें 0 (n) खर्च करना चाहिए।
मैं वास्तव में सराहना करूंगा कि क्या कोई इसे स्पष्ट कर सकता है या string.length के मूल कार्यान्वयन के लिए लिंक भेज सकता है
अग्रिम में धन्यवाद :-)
जवाब
स्ट्रिंग एक वर्ग है। एक वर्ग में सदस्य चर और कार्य हो सकते हैं। जब आप एक स्ट्रिंग बनाते हैं तो लंबाई सदस्य चर शायद सेट होता है। शायद एक "छिपा हुआ" फ़ंक्शन है जो स्ट्रिंग के शुरुआती के लिए ओ (एन) चलाता है लेकिन एक बार लंबाई निर्धारित होने के बाद, कंप्यूटर को केवल मूल्य तक पहुंचने की आवश्यकता होती है, इसलिए ओ (1)। यह सब पूर्वनिर्धारित है और प्रोग्रामर को केवल फ़ंक्शन का उपयोग करने का तरीका पता होना चाहिए।
यह इसलिए है क्योंकि स्ट्रिंग अपरिवर्तनीय है, इसलिए लंबाई की गणना तब की जाती है जब स्ट्रिंग बनाई जाती है और यह कभी नहीं बदलेगी।
जब एक स्ट्रिंग को संशोधित किया जाता है, तो एक नया स्ट्रिंग ऑब्जेक्ट बनाया जाएगा और इतनी लंबाई।
इतनी लंबाई स्थिर समय है O(1)।