Immutable String - Problems & Solutions
Last updated
Was this helpful?
Last updated
Was this helpful?
Sevimli tilingizdagi satr o'zgarmas yoki o'zgarmasligini oldingi maqolada bilishingiz kerak. Agar satr o'zgarmas bo'lsa, u ba'zi muammolarni keltirib chiqaradi. Umid qilamizki, biz ham oxirida yechimni taqdim etamiz.
Shubhasiz, oʻzgarmas qatorni oʻzgartirib boʻlmaydi. Belgilardan faqat bittasini o'zgartirmoqchi bo'lsangiz, yangi qator yaratishingiz kerak.
Satrlarni birlashtirishda
juda ehtiyot bo'lishingiz kerak. For tsiklida bir necha marta satrlarni birlashtirish misolini ko'rib chiqaylik:
Java uchun satrlarni birlashtirish qanchalik sekin ekanligiga e'tibor bering? Boshqa tomondan, C ++ da sezilarli ishlash ta'siri yo'q.
Java-da, satr o'zgarmas
bo'lgani uchun, birlashtirish birinchi navbatda yangi satr uchun etarli joy ajratish, eski satrdan tarkibni nusxalash va yangi satrga qo'shish orqali ishlaydi.
Shunday qilib, umumiy vaqt murakkabligi quyidagicha bo'ladi:
5 + 5 × 2 + 5 × 3 + … + 5 × n = 5 × (1 + 2 + 3 + … + n) = 5 × n × (n + 1) / 2,
Bu O(n2)
.
Agar siz satringiz o'zgaruvchan bo'lishini istasangiz, ba'zi almashtirishlar mavjud:
Agar satrlarni tez-tez birlashtirishga toʻgʻri kelsa, StringBuilder
kabi boshqa maʼlumotlar tuzilmalaridan foydalangan maʼqulroq boʻladi. Quyidagi kod O(n)
murakkabligida ishlaydi.
© Leetcode