Longest Common Prefix
https://leetcode.com/problems/longest-common-prefix/ | Easy |
Условие
Необходимо найти самый длинный общий префикс среди массива строк. Если общего префикса нет, вернуть пустую строку "".
Примеры
Input:
["flower", "flow", "flight"]Output:
"fl”
Input:
["dog", "racecar", "car"]Output:
"”Explanation:
Среди входных строк нет общего префикса.
Решение
fun longestCommonPrefix(strs: Array<String>): String {
if (strs.isEmpty()) return "" // Если массив пуст, сразу возвращаем пустую строку
var prefix = strs[0] // Начинаем с первой строки как потенциального общего префикса
// Проходим по каждой строке массива, начиная со второй
for (i in 1 until strs.size) {
// Пока текущая строка не содержит префикс, укорачиваем префикс
while (strs[i].indexOf(prefix) != 0) {
prefix = prefix.substring(0, prefix.length - 1)
if (prefix.isEmpty()) return "" // Если префикс стал пустым, возвращаем пустую строку
}
}
return prefix // Возвращаем итоговый общий префикс
}
Временная сложность
O(n), где n — это общее количество символов во всех строках. В худшем случае алгоритм должен сравнить все символы всех строк.
Пространственная сложность
O(1), так как мы используем постоянное количество дополнительной памяти, не считая входных данных.