Задача «Самый длинный общий префикс» относится к категории простых и является хорошим началом для понимания более сложных алгоритмов. Я сосредоточусь на объяснении решения, которое работает, а не на временной и пространственной сложности.
Вызов:
«Напишите функцию для поиска самой длинной строки общего префикса среди массива строк.
Если общего префикса нет, вернуть пустую строку «». LeetCode
Примечание.
//Find longest equal prefix // Array of strings //Return “” if empty //Prefix will always start at the beginning of the string
Пример:
string = [“pot”, “pop”, “top”] return “” string = [“flower”,” flow”,” floor”] return “flo”
Пояснение:
//Loop through the array of substrings compares each of the characters at a similar index, //starting from the beginning and increment //until different //then return the longest prefix.
1.Префикс начинается с пустой строкиlongestPrefix = “”
2.Если общего префикса нет, вернуть пустую строку «». LeetCode
if (strs.length === 0) return longestPrefix
return longestPrefix
3.Прокручивать символы подстроки, начиная с первого символа первой подстроки
for (let i = 0; i < strs[0].length; i++){
for (let j = 0; j < strs.length; j++){
4. Сравните каждый символ подстрок массива с одинаковым индексом и увеличивайте количество символов до тех пор, пока они не будут равны
const currentChar = strs[0][i]
if (strs[j][i] !== currentChar) return longestPrefix
5. вернуть самый длинный префикс
longestPrefix += currentChar
Решение:
var longestCommonPrefix = function(strs) { longestPrefix = “” if (strs.length === 0) return longestPrefix for (let i = 0; i < strs[0].length; i++){ const currentChar = strs[0][i] for (let j = 0; j < strs.length; j++){ if (strs[j][i] !== currentChar) return longestPrefix } longestPrefix += currentChar } return longestPrefix };