पाठ 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!) हैं।