我正在尝试解决,但是找不到好的算法。像这样
“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还是其他任何语言。
答案 0 :(得分:3)
因此number of line
和length 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);