Сложность: easy
Дана строка s, проверьте, может ли она быть построена путем взятия подстроки и добавления нескольких копий этой подстроки друг за другом.
Пример:
Input: heights = [2,1,5,6,2,3]
Output: 10
Explanation: The above is a histogram where width of each bar is 1.
The largest rectangle is shown in the red area, which has an area = 10 units.
👨💻 Алгоритм:
1⃣Создайте целочисленную переменную n, равную длине строки s.
2⃣Итерация по всем префиксным подстрокам длины i от 1 до n/2:
Если i делит n, объявите пустую строку pattern. Используйте внутренний цикл, который выполняется n/i раз для конкатенации подстроки, сформированной из первых i символов строки s.
Если pattern равен s, вернуть true.
3⃣Если нет подстроки, которую можно повторить для формирования s, вернуть false.
😎 Решение:
class Solution {
public function repeatedSubstringPattern($s) {
$n = strlen($s);
for ($i = 1; $i <= $n / 2; $i++) {
if ($n % $i == 0) {
$pattern = "";
$substr = substr($s, 0, $i);
for ($j = 0; $j < $n / $i; $j++) {
$pattern .= $substr;
}
if ($s == $pattern) {
return true;
}
}
}
return false;
}
}Ставь 👍 и забирай 📚 Базу знаний