string.length कॉलिंग स्ट्रिंग पर लंबाई की गणना करता है।

Sep 20 2020

हाल ही में मुझे पता चला कि जावास्क्रिप्ट में string.length के लिए समय की जटिलता 0 (1) है। क्या कोई ऐसा है जो मुझे यह समझा सकता है कि लंबाई पाने के लिए हमें सभी पात्रों के माध्यम से जाने की आवश्यकता है और यदि स्ट्रिंग में n वर्ण हैं, तो यह n पर निर्भर होना चाहिए और हमें 0 (n) खर्च करना चाहिए।

मैं वास्तव में सराहना करूंगा कि क्या कोई इसे स्पष्ट कर सकता है या string.length के मूल कार्यान्वयन के लिए लिंक भेज सकता है

अग्रिम में धन्यवाद :-)

जवाब

NonameLover Sep 20 2020 at 01:25

स्ट्रिंग एक वर्ग है। एक वर्ग में सदस्य चर और कार्य हो सकते हैं। जब आप एक स्ट्रिंग बनाते हैं तो लंबाई सदस्य चर शायद सेट होता है। शायद एक "छिपा हुआ" फ़ंक्शन है जो स्ट्रिंग के शुरुआती के लिए ओ (एन) चलाता है लेकिन एक बार लंबाई निर्धारित होने के बाद, कंप्यूटर को केवल मूल्य तक पहुंचने की आवश्यकता होती है, इसलिए ओ (1)। यह सब पूर्वनिर्धारित है और प्रोग्रामर को केवल फ़ंक्शन का उपयोग करने का तरीका पता होना चाहिए।

2 ssilas777 Sep 20 2020 at 01:26

यह इसलिए है क्योंकि स्ट्रिंग अपरिवर्तनीय है, इसलिए लंबाई की गणना तब की जाती है जब स्ट्रिंग बनाई जाती है और यह कभी नहीं बदलेगी।

जब एक स्ट्रिंग को संशोधित किया जाता है, तो एक नया स्ट्रिंग ऑब्जेक्ट बनाया जाएगा और इतनी लंबाई।

इतनी लंबाई स्थिर समय है O(1)।