Consecutive strings
链接
题目
你将会得到一个字符串数组strarr以及一个整数k。你的任务是返回一个由k个数组中连续字符串组成的第一个最长的字符串。
longestConsec(["zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"], 2); // return "abigailtheta"
n表示字符串数组的长度,如果 n = 0 或者 k > n 或者 k <= 0 返回""。
我的思路及实现
function longestConsec(strarr, k) {
var n = strarr.length;
if (n == 0 || k > n || k <= 0) {
return "";
} else {
var str_max = "";
for (var i = 0; i < strarr.length; i++) {
var str = "";
for (var j = 0; j < k; j++) {
str = str + strarr[j + i];
}
if (str.length > str_max.length) {
str_max = str;
}
if (strarr.length - i - k == 0 ){
break;
}
}
return str_max;
}
}
Best Practice
function longestConsec(strarr, k) {
var longest = "";
for(var i=0;k>0 && i<=strarr.length-k;i++){
var tempArray = strarr.slice(i,i+k);
var tempStr = tempArray.join("");
if(tempStr.length > longest.length){
longest = tempStr;
}
}
return longest;
}
function longestConsec(strarr, k) {
if (k <= 0 || k > strarr.length) {
return '';
}
return strarr.reduce((long, item, i) => {
const currString = strarr.slice(i, i + k).join('');
return (currString.length > long.length)
? currString
: long;
}, '');
}
function longestConsec(strarr, k) {
if( strarr.length==0 || k> strarr.length || k <1 ) return "";
let lens = strarr.map( (_,i,arr) => arr.slice(i,i+k).join('').length ),
i = lens.indexOf( Math.max(...lens) );
return strarr.slice(i,i+k).join('')
}