पाठ 4 / 42
Strings
वर्णों का array — अक्सर अपरिवर्तनीय, जो इन्हें बनाने का तरीका बदल देता है।
अपरिवर्तनीयता मायने रखती है
Python, Java और JS में string जगह पर नहीं बदली जा सकती। लूप में s += c हर बार नई string बनाता है — कुल O(n^2)। वर्णों को list/StringBuilder में इकट्ठा करें और एक बार join करें।
कुशलता से बनाएँ
list-और-join पैटर्न रैखिक है।
# slow: O(n^2)
out = ""
for ch in text:
out += ch.upper()
# fast: O(n)
parts = []
for ch in text:
parts.append(ch.upper())
out = "".join(parts)सामान्य टूलकिट
आवृत्ति गणना (hash map / 26 का array), palindrome के लिए two pointers, substring के लिए sliding window, और anagram कुंजी के रूप में वर्ण sort करना।
त्वरित जाँच: दो strings anagram हैं या नहीं, जाँचने का सबसे तेज़ तरीका?
- हर क्रमचय आज़माएँ
- वर्ण गणनाओं की तुलना करें
- एक को उल्टा कर तुलना करें
Answer
वर्ण गणनाओं की तुलना करें — हर वर्ण गिनना O(n) है; क्रमचय O(n!) हैं।