2109. Menambah Ruang pada Rentetan
Kesukaran: Sederhana
Topik: Tatasusunan, Dua Penunjuk, Rentetan, Simulasi
Anda diberi ruang tatasusunan integer 0-indeks dan 0-indeks rentetan yang menerangkan indeks dalam rentetan asal tempat ruang akan ditambah. Setiap ruang hendaklah disisipkan sebelum aksara pada indeks yang diberikan.
- Sebagai contoh, diberi s = "Nikmati Kopi Anda" dan ruang = [5, 9], kami meletakkan ruang sebelum 'Y' dan 'C', yang masing-masing berada pada indeks 5 dan 9. Oleh itu, kami memperoleh "Nikmati Kopi Anda".
Kembalikan rentetan yang diubah suai selepas ruang telah ditambahkan.
Contoh 1:
-
Input: s = "LeetcodeHelpsMeLearn", ruang = [8,13,15]
-
Output: "Leetcode Membantu Saya Belajar"
-
Penjelasan: Indeks 8, 13 dan 15 sepadan dengan aksara yang digariskan dalam "LeetcodeHelpsMeLearn".
- Kami kemudian meletakkan ruang sebelum aksara tersebut.
Contoh 2:
-
Input: s = "icodeinpython", ruang = [1,5,7,9]
-
Output: "i kod dalam py thon"
-
Penjelasan: Indeks 1, 5, 7, dan 9 sepadan dengan aksara yang digariskan dalam "icodeinpython".
- Kami kemudian meletakkan ruang sebelum aksara tersebut.
Contoh 3:
-
Input: s = "jarak", ruang = [0,1,2,3,4,5,6]
-
Output: " s p a c i n g"
-
Penjelasan: Kami juga dapat meletakkan ruang sebelum aksara pertama rentetan.
Kekangan:
- 1 <= s.panjang <= 3 * 105
-
s hanya terdiri daripada huruf kecil dan huruf besar Inggeris.
- 1 <= spaces.length <= 3 * 105
- 0 <= ruang[i] <= s.panjang - 1
- Semua nilai ruang meningkat dengan ketat.
Petunjuk:
- Buat rentetan baharu, pada mulanya kosong, sebagai rentetan yang diubah suai. Lelaran melalui rentetan asal dan tambahkan setiap aksara rentetan asal pada rentetan baharu. Walau bagaimanapun, setiap kali anda mencapai watak yang memerlukan ruang di hadapannya, tambahkan ruang sebelum menambahkan watak itu.
- Memandangkan tatasusunan indeks untuk lokasi ruang diisih, gunakan penuding untuk menjejaki indeks seterusnya untuk meletakkan ruang. Hanya naikkan penunjuk apabila ruang telah ditambahkan.
- Pastikan operasi tambah anda boleh dilakukan dalam O(1).
Penyelesaian:
Kita boleh menggunakan pendekatan yang cekap dengan dua petunjuk. Begini rupa pelaksanaan dalam PHP 5.6:
Penjelasan Penyelesaian:
- Gunakan spaceIndex penunjuk untuk menjejaki kedudukan semasa dalam tatasusunan ruang.
- Lelaran melalui rentetan s menggunakan gelung.
- Semak sama ada indeks semasa dalam rentetan sepadan dengan nilai semasa dalam tatasusunan ruang. Jika ya, tambahkan ruang pada hasil carian dan gerakkan penunjuk spaceIndex ke hadapan.
- Tambahkan aksara semasa rentetan pada hasil carian.
- Kembalikan hasil akhir sebagai rentetan tunggal.
Pendekatan ini memastikan kami memproses input dengan cekap, mengambil kesempatan daripada tertib disusun tatasusunan ruang.
Mari kita laksanakan penyelesaian ini dalam PHP: 2109. Menambah Ruang pada Rentetan
Penjelasan:
-
Pelampiran yang Cekap: . operator dalam PHP digunakan untuk menambahkan rentetan dengan cekap.
-
Dua Penunjuk: Penunjuk spaceIndex memastikan kami hanya memproses tatasusunan ruang sekali.
-
Kerumitan Masa:
- Mengulang rentetan mengambil masa O(n), dengan n ialah panjang rentetan.
- Menyemak terhadap penunjuk tatasusunan ruang mengambil masa O(m), dengan m ialah panjang tatasusunan ruang.
- Gabungan: O(n m), yang optimum memandangkan kekangan.
Penyelesaian ini mematuhi kekangan dan cekap walaupun untuk input yang besar.
Pautan Kenalan
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!
Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
Atas ialah kandungan terperinci Menambah Ruang pada Rentetan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan:Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn