如何按照要求分割字符串

时间:2019-06-21 03:07:37

标签: string algorithm

我正在尝试解决,但是找不到好的算法。像这样

“jesuisfrancaisdoriginemalienneetjhabitelesetatsunis”

然后我要按照以下内容拆分

“jesuisfr”
“ancaisdo”
“riginema”
“lienneet”
“jhabitel”
“setatsun”
“is”

要求

  • 段的大小取决于字符串的长度
  • length of segment >= number of line and length of segment - number of line <= 1

按照此要求,上面的字符串长度为52。所以length of segment = 8 and number of line = 7

我现在的问题是如何将给定的要求应用于从50到无穷大的任何大小的字符串?算法或伪代码可以是什么?无论是JavaScript还是其他任何语言。

2 个答案:

答案 0 :(得分:3)

因此number of linelength of segment将取决于给定字符串长度的平方根。

let,
square_root =字符串长度的平方根
所以number of line是square_root 和length of segment将为square_root或square_root + 1。

如果square_root * square_root等于字符串长度,则length of segment将为square_root,否则为square_root + 1。

答案 1 :(得分:0)

JS版本:

let str = 'jesuisfrancaisdoriginemalienneetjhabitelesetatsunis';
let length = str.length;

let segment = 1, line;
while(segment < length)
{
    line = Math.ceil(length / segment);
	if(segment >= line && segment - line <= 1)
    {
      break;
    }
    segment ++;  
}

let arr = [];
for(let i = 0; i < line; i ++){
    let newStr = str.substr(0, segment);
    arr.push(newStr);
    str = str.substr(segment);
}

console.log('segment=' + segment, 'line=' + line);
console.log('string length = ' + length);
console.log('result = ' + arr);