Rumah >hujung hadapan web >tutorial js >Tawarikh Pengekodan Skrip: Perkataan Songsang dalam Rentetan
Memandangkan rentetan input s, terbalikkan susunan perkataan. Perkataan ditakrifkan sebagai urutan aksara bukan ruang. Perkataan dalam s akan dipisahkan oleh sekurang-kurangnya satu ruang. Kembalikan rentetan perkataan dalam susunan terbalik yang digabungkan dengan satu ruang.
Perhatikan bahawa s mungkin mengandungi ruang hadapan atau belakang atau berbilang ruang antara dua perkataan. Rentetan yang dikembalikan seharusnya hanya mempunyai satu ruang yang memisahkan perkataan. Jangan sertakan sebarang ruang tambahan.
Untuk menyelesaikan masalah ini, kita perlu:
function reverseWordsBruteForce(s: string): string { // Split the string by spaces and filter out empty strings let words = s.trim().split(/\s+/); // Reverse the array of words words.reverse(); // Join the words with a single space return words.join(' '); }
Penyelesaian ini cekap memandangkan kekangan. Walau bagaimanapun, ia menggunakan ruang tambahan untuk susunan perkataan.
Jika jenis data rentetan boleh berubah dan kita perlu menyelesaikannya di tempat dengan ruang tambahan O(1), kita boleh menggunakan teknik dua penuding untuk membalikkan perkataan dalam rentetan asal.
function reverseWordsOptimized(s: string): string { // Trim the string and convert it to an array of characters let chars = s.trim().split(''); // Helper function to reverse a portion of the array in place function reverse(arr: string[], left: number, right: number) { while (left < right) { [arr[left], arr[right]] = [arr[right], arr[left]]; left++; right--; } } // Reverse the entire array of characters reverse(chars, 0, chars.length - 1); // Reverse each word in the reversed array let start = 0; for (let end = 0; end <= chars.length; end++) { if (end === chars.length || chars[end] === ' ') { reverse(chars, start, end - 1); start = end + 1; } } // Join the characters back into a string and split by spaces to remove extra spaces return chars.join('').split(/\s+/).join(' '); }
console.log(reverseWordsBruteForce("the sky is blue")); // "blue is sky the" console.log(reverseWordsBruteForce(" hello world ")); // "world hello" console.log(reverseWordsBruteForce("a good example")); // "example good a" console.log(reverseWordsBruteForce("singleWord")); // "singleWord" console.log(reverseWordsBruteForce(" ")); // "" console.log(reverseWordsOptimized("the sky is blue")); // "blue is sky the" console.log(reverseWordsOptimized(" hello world ")); // "world hello" console.log(reverseWordsOptimized("a good example")); // "example good a" console.log(reverseWordsOptimized("singleWord")); // "singleWord" console.log(reverseWordsOptimized(" ")); // ""
Manipulasi Rentetan:
Teknik Dua Mata:
Algoritma Di Tempat:
Dengan mempraktikkan masalah dan strategi sedemikian, anda boleh meningkatkan kemahiran menyelesaikan masalah anda dan lebih bersedia untuk pelbagai cabaran pengekodan.
Atas ialah kandungan terperinci Tawarikh Pengekodan Skrip: Perkataan Songsang dalam Rentetan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!