4 回答

TA貢獻(xiàn)1772條經(jīng)驗 獲得超6個贊
超時是因為您沒有遞增i
。i + 2
計算新值但不將其分配到任何地方。你可以i
通過做i += 2
which 的簡寫來更新i = i + 2
。

TA貢獻(xiàn)1155條經(jīng)驗 獲得超0個贊
您需要使用i+=2. 此外,解決方案中存在一些錯誤:
function splitPairs(input) {
let inputArray = input.split('');
let result = [];
if(!inputArray)
return result;
if (inputArray.length % 2 !== 0) {
for (let i = 0; i < inputArray.length-1; i+=2) {
let pair = inputArray[i] + inputArray[i+1];
result.push(pair);
}
result.push(inputArray[inputArray.length - 1] + '_');
} else {
for (let i = 0; i < inputArray.length; i += 2) {
let pair = inputArray[i] + inputArray[i+1];
result.push(pair);
}
}
return result;
}
console.log(splitPairs(""));
console.log(splitPairs("abcd"));
console.log(splitPairs("abcde"));
評論中提到的一個更簡單的解決方案(一個循環(huán))是:
function splitPairs(input) {
let inputArray = input.split('');
let result = [];
if(!inputArray)
return result;
let odd = (inputArray.length % 2 !== 0);
let len = (odd) ? inputArray.length-1 : inputArray.length;
for (let i = 0; i < len; i+=2) {
let pair = inputArray[i] + inputArray[i+1];
result.push(pair);
}
if(odd)
result.push(inputArray[inputArray.length - 1] + '_');
return result;
}
console.log(splitPairs(""));
console.log(splitPairs("abcd"));
console.log(splitPairs("abcde"));

TA貢獻(xiàn)1789條經(jīng)驗 獲得超10個贊
您可以使用一個(兩個)襯墊
var result=str.split(/(..)/).filter(v=>v) if (result[result.length-1].length==1) result[result.length-1]+="_"

TA貢獻(xiàn)1770條經(jīng)驗 獲得超3個贊
你可以這樣做
function splitPairs(input) {
return input.split('').map((c, i) => {
if (i % 2 !== 0) return;
if (input[i+1]) {
return input[i] + input[i+1];
}
return input[i] + '_';
}).filter(pair => pair);
}
添加回答
舉報