JavaScript 如何将句子分割为固定长度的块同时不打断单词
在给定的问题陈述中,我们需要将给定的句子分割为固定长度的块,同时不打断句子中的单词。我们需要使用JavaScript实现解决方案。
理解问题
现在的问题是将给定句子分割为固定长度的块,同时不打断其单词。所以我们将句子分割为给定长度的子字符串,同时确保每个块中的单词保持完整。
例如,假设我们有一个句子:”You are reading this article on Tutorials point website”,那么输出应该是[‘You are reading’,’this article on’,’Tutorials point’,’website’]。所以我们需要实现这个功能。
解决该问题的方法
为了解决这个问题,我们将在JavaScript中定义一个名为splitSentence的函数。该函数接受两个参数:第一个参数是要分割的句子,第二个参数是所需的块长度。因此,输入的句子将使用’split’方法分割为单词。split方法将在每个空格字符处分割句子,并返回单词数组。我们将使用一个空数组来存储结果块。通过当前块,我们将跟踪当前正在形成的块。使用循环,我们将遍历数组中的单词。
步骤
步骤1: 创建一个函数来分割给定输入句子的句子。函数接受两个参数,要分割的句子和块长度。
步骤2: 使用’split’方法将每个单词分割并将这些单词存储在变量中。
步骤3: 创建一个空数组来存储结果块。
步骤4: 为了跟踪当前块,创建一个currentBlock变量,初始为空字符串。
步骤5: 使用循环遍历words数组中的每个单词。检查当前块是否符合每个单词的块长度条件。
步骤6: 如果在每次迭代中将单词添加到currentBlock并且未达到最大块长度,则应将单词附加到currentBlock。
步骤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),因为我们使用了拆分方法和循环。在这里,拆分方法和循环都需要O(n)的时间将句子拆分成单词块。假设总的块数为’b’,则空间复杂度为O(n + b)。
结论
在我们的函数中,我们有效地将给定的句子分解成了相同长度的块,而不破坏单词。该函数的时间复杂度和空间复杂度分别为O(n)和O(n+b)。在整个过程中,我们确保每个单词都是准确而有意义的。