मैं सीटीआई से बाहर एक समस्या पर काम कर रहा हूं।
अध्याय 1 की तीसरी समस्या आपने एक स्ट्रिंग ली है जैसे कि
'Mr John Smith '
और आपको मध्यस्थ स्थानों को बदलने के लिए कहता है %20
:
'Mr%20John%20Smith'
लेखक पायथन में इस समाधान की पेशकश करता है, इसे O (n) कहते हैं:
def urlify(string, length):
'''function replaces single spaces with %20 and removes trailing spaces'''
counter = 0
output = ''
for char in string:
counter += 1
if counter > length:
return output
elif char == ' ':
output = output + '%20'
elif char != ' ':
output = output + char
return output
मेरा प्रश्न:
मैं समझता हूं कि यह वास्तविक स्ट्रिंग के माध्यम से बाएं से दाएं स्कैनिंग के संदर्भ में ओ (एन) है। लेकिन पायथन अपरिवर्तनीय में तार नहीं हैं? यदि मेरे पास एक स्ट्रिंग है और मैं +
ऑपरेटर के साथ एक और स्ट्रिंग जोड़ देता हूं , तो क्या यह आवश्यक स्थान आवंटित नहीं करता है, मूल पर प्रतिलिपि बनाता है, और फिर अपंग स्ट्रिंग पर कॉपी करता है?
अगर मेरे पास n
प्रत्येक लंबाई 1 के तार का संग्रह है , तो यह है:
1 + 2 + 3 + 4 + 5 + ... + n = n(n+1)/2
या O (n ^ 2) समय , हाँ? या क्या मैं गलत हूँ कि पायथन को किस तरह से जोड़ा जाता है?
वैकल्पिक रूप से, अगर आप मुझे मछली मारने का तरीका सिखाने के लिए तैयार हैं: तो मैं इसे अपने लिए कैसे खोजूंगा? मैं Google के आधिकारिक स्रोत के अपने प्रयासों में असफल रहा हूँ। मैंने https://wiki.python.org/moin/TimeComplexity पाया, लेकिन इसमें स्ट्रिंग्स पर कुछ भी नहीं है।
urllib.urlencode