Я пытался найти самую длинную общую подстроку в наборе строк в JavaScript.
Мне пришла идея Найти самую длинную общую начальную подстроку в наборе строк
но я не только ищу начальную подстроку
Итак, я продолжил:
Я думаю, что это работает, как ожидалось, но есть издержкиmap
и sort
.
function longestCommonSubstring(array) {
// Copy the array
let arr = array.slice().sort();
// For each individual string sort them
arr = arr.map(a => a.split('').sort().join(''));
// Check the first and last string and check till chars match
let a0 = arr[0],
aLast = arr[arr.length -1],
len = arr[0].length,
i = 0;
while(i < len && a0[i] === aLast[i]) i++;
// return
return a0.substring(0,i);
}
Я что-то не так делаю?Можно ли сделать это намного более эффективным способом?
INPUT ["abc", "cxabgi"]
OUTPUT ["ab"]