如何在 JavaScript 中將句子分割成固定長度的塊,且不拆分單詞
在給定的問題陳述中,我們需要將給定的句子分割成固定長度的塊,並且不能拆分句子的單詞。並且我們需要用 Javascript 實現該解決方案。
理解問題
手頭的問題是將給定的句子分割成固定長度的塊,且不拆分其中的單詞。因此,我們將句子分成給定長度的子字串,並且還要確保每個塊中的單詞都保持完整。
例如,假設我們有一個句子“You are reading this article on Tutorials point website”,那麼輸出應該為 [ 'You are reading', 'this article on', 'Tutorials point', 'website' ]。因此,我們需要實現一個函式來完成此任務。
給定問題的邏輯
為了在 Javascript 中解決這個問題,我們將定義一個名為 splitSentence 的函式。該函式接受兩個引數:第一個是要分割的句子,第二個是所需的塊長度。因此,輸入句子將藉助 'split' 方法分割成各個單詞。split 方法將在每個空格字元處分割句子並返回單詞陣列。我們將使用一個空陣列來儲存結果塊。藉助 current block,我們將跟蹤正在形成的當前塊。並使用迴圈遍歷陣列中的單詞。
演算法
步驟 1:建立一個函式來分割給定輸入句子的句子。該函式接受兩個引數,即要分割的句子和塊長度。
步驟 2:藉助 ‘split’ 方法分割每個單詞,並將這些單詞儲存在 words 變數中。
步驟 3:建立一個空陣列來儲存結果塊。
步驟 4:為了跟蹤當前塊,建立一個 currentBlock 變數,並將其初始設定為一個空字串。
步驟 5:藉助迴圈遍歷 words 陣列中的每個單詞。對於每個單詞,檢查當前塊是否滿足塊長度的條件。
步驟 6:如果每次迭代中的單詞都新增到當前塊中並且塊長度沒有達到最大,則應將該單詞附加到當前塊。
步驟 7:如果當前塊中的塊長度超過了,那麼我們將建立一個新的塊,並將當前單詞新增到其中。
步驟 8:當迴圈結束時,最後一個塊將被新增到 blocks 陣列中,並且 blocks 陣列將作為函式的輸出返回。
示例
// Function to split the given sentence into block of words
function splitSentence(sentence, blockLength) {
const words = sentence.split(' ');
const blocks = [];
let currentBlock = '';
for (let i = 0; i < words.length; i++) {
const word = words[i];
if (currentBlock.length + word.length <= blockLength) {
currentBlock += (currentBlock.length > 0 ? ' ' : '') + word;
} else {
blocks.push(currentBlock);
currentBlock = word;
}
}
if (currentBlock.length > 0) {
blocks.push(currentBlock);
}
return blocks;
}
const sentence = "This is a sentence that has to be splitted into blocks of a fixed length";
const blockLength = 15;
const result = splitSentence(sentence, blockLength);
console.log(result);
輸出
[
'This is a',
'sentence that',
'has to be',
'splitted into',
'blocks of a',
'fixed length'
]
複雜度
將句子分割成單詞塊的時間複雜度為 O(n),因為我們使用了 split 方法和迴圈。此處,split 方法和迴圈都花費 O(n) 時間將句子分割成單詞塊。並且假設塊的總數為 'b',那麼空間複雜度為 O(n + b)。
結論
在我們的函式中,我們有效地將給定的句子分割成了相同長度的塊,且沒有拆分單詞。該函式的時間複雜度和空間複雜度分別為 O(n) 和 O(n+b)。在整個過程中,我們確保了每個單詞都是準確且有意義的。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP