我正在通過我在網上找到的編碼挑戰。我有第一個測試用例通過,但第二個失敗。我試圖判斷我失敗的第二個測試用例是否是一個錯字。代碼挑戰:重命名文件名如果重複存在
這裏有一個問題:
現在給你想要的文件名的排列在其 創建的順序。由於兩個文件不能具有相同的名稱,因此後面的文件名將以(k)的形式添加到其名稱中,其中k是 最小的正整數,使得所獲得的名稱尚未被使用 。
返回將被賦予文件的名稱數組。
測試用例:
1 - 傳:
- INPUT:
["doc", "doc", "image", "doc(1)", "doc"]
- OUTPUT:
["doc", "doc(1)", "image", "doc(1)(1)", "doc(2)"]
2 - 失敗:
- 輸入:
["a(1)","a(6)","a","a","a","a","a","a","a","a","a","a"]
- OUTPUT:
["a(1)","a(6)","a","a(2)","a(3)","a(4)","a(5)","a(7)","a(8)","a(9)","a(10)","a(11)"]
這裏是我的代碼,經過第一規格:
function fileNaming(names) {
var finalArr = [],
obj = {};
names.forEach(function(val){
if(obj[val] === undefined){
if(finalArr.indexOf(val) === -1){
finalArr.push(val);
obj[val] = 0;
} else {
obj[val] = 1;
finalArr.push(val + "(" + obj[val] + ")");
}
} else {
finalArr.push(val + "(" + (++obj[val]) + ")");
}
});
return finalArr;
}
問:
- 在第二次測試規範,爲什麼ISN有沒有
"a(1)(1)"
就像有一個"doc(1)(1)"
這是一個錯字? - 如果有人提出了改進我的方法或其他方法的建議,我將非常感謝您的反饋。
它不應該是「 」一(2)「 '而不是'「a(1)(1)」'? –
我不確定,我認爲應該。但是如果你看第一個例子,有一個「doc」,「doc(1)」,「doc(1)(1)」,「doc(2)」'。 – HelloWorld
期望的輸出看起來正確。不應該有一個(1)(1),因爲在輸入中遇到(1)之前,數組中不存在名爲a(1)的文件。該要求規定如果存在重複名稱,將使用下一個最小整數。由於下一個「a」迭代沒有(1),它將是(2)。 –