JavaScript 如何将句子分割为固定长度的块同时不打断单词

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)。在整个过程中,我们确保每个单词都是准确而有意义的。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程