function getFolderNames(names: string[]): string[] {
const folderNames: string[] = [],
folderSets: Set<string> = new Set<string>();
for (const name of names) {
const folderName: string = addFolderName(folderSets, name);
folderNames.push(folderName);
}
return folderNames;
};
function addFolderName(folderSets: Set<string>, name: string): string {
let folderName: string = name;
if (!folderSets.has(folderName)) {
folderSets.add(folderName);
return folderName;
}
// 添加文件后缀(k)
let k: number = 0;
do {
k++;
folderName = `${name}(${k})`;
} while (folderSets.has(folderName));
folderSets.add(folderName);
return folderName;
}
/**
*
* @description 传说中的别人家的代码,直接搬运过来的,写的很优雅了
* @see https://leetcode-cn.com/problems/making-file-names-unique/solution/1487-bao-zheng-wen-jian-ming-wei-yi-by-tuotuoli/
* @param {string[]} names
* @return {*} {string[]}
*/
function getFolderNames(names: string[]): string[] {
const map: { [key: string]: number } = Object.create(null);
return names.map(name => {
let folderName = name;
while (folderName in map) {
folderName = `${name}(${map[name]})`;
++map[name];
}
map[folderName] = 1;
return folderName;
});
};