В начале недели мы предлагали написать функцию, которая найдёт самый длинный общий префикс для всех путей к файлам в файловой системе. Вариантов решения может быть несколько, вот один из них:
const findLongestCommonPrefix = (paths) => {
if (paths.length === 0) return '';
// Найдем самую короткую строку
const shortest = paths.reduce((prev, curr) => prev.length < curr.length ? prev : curr);
// Проверим каждый символ в самой короткой строке
for (let i = 0; i < shortest.length; i++) {
for (let j = 0; j < paths.length; j++) {
if (paths[j][i] !== shortest[i]) {
// Найдем последнее совпадение с символом '/'
const lastSlash = shortest.slice(0, i).lastIndexOf('/');
return shortest.slice(0, lastSlash + 1);
}
}
}
// Если дошли до конца самой короткой строки, возвращаем её (с учётом границы директории)
const lastSlash = shortest.lastIndexOf('/');
return shortest.slice(0, lastSlash + 1);
}
const paths = [
"/home/user/docs/file.txt",
"/home/user/docs/image.png",
"/home/user/downloads/music.mp3"
];
console.log(findLongestCommonPrefix(paths)); // "/home/user/"Поделитесь в комментариях, удалось ли вам найти правильное решение 👇