Дана строка, которая состоит из букв латинского алфавита в
нижнем регистре. Реализуйте следующий алгоритм. Если в строке
есть две «одинаковые» буквы, они заменяются одной следующей
для них буквой алфавита.
"aa" => "b", "bb" => "c", .. "zz" => "a".
Заменяемые символы не обязательно смежные. Эта операция
повторяется до тех пор, пока в строке не останется повторяющихся
букв. Порядок символов не важен.
"zzzab"
"azab"
"bzb"
"cz" // return
Моя попытка:
<?php
$str = "zzzab";
$alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
$str = preg_split("//u", $str);
$arr = [];
foreach ($str as $v) {
if (in_array($v, $arr))
continue;
$arr[] = $v;
}
$str = implode($arr);
print_r ($str);
вроде удалила первые символы но заменить не смогла.
1. Anastasi - 10 Сентября, 2021 - 10:13:37 - перейти к сообщению
2. don.bidon - 10 Сентября, 2021 - 13:01:25 - перейти к сообщению
Так заменять и не пытались )
Посимвольно бегите по строке, помня предыдущий символ, если предыдущий символ совпадает с текущим, делайте замену и начинайте сканирование заново.
Или требуют изящного решения?
Посимвольно бегите по строке, помня предыдущий символ, если предыдущий символ совпадает с текущим, делайте замену и начинайте сканирование заново.
Или требуют изящного решения?
3. Anastasi - 10 Сентября, 2021 - 19:45:08 - перейти к сообщению
don.bidon пишет:
Так заменять и не пытались )
Посимвольно бегите по строке, помня предыдущий символ, если предыдущий символ совпадает с текущим, делайте замену и начинайте сканирование заново.
Или требуют изящного решения?
Посимвольно бегите по строке, помня предыдущий символ, если предыдущий символ совпадает с текущим, делайте замену и начинайте сканирование заново.
Или требуют изящного решения?
Не пыталась так как вообще не понимаю как) Вот прошу помощи. Ваши слова мне понятны но как написать код не знаю, очень плохо разбираюсь в языке пока
4. don.bidon - 10 Сентября, 2021 - 21:09:04 - перейти к сообщению
Давайте постепенно, https://www.php.net/manual/ru/fu...ction.substr.php
5. Vladimir Kheifets - 12 Сентября, 2021 - 07:29:38 - перейти к сообщению
Anastasi пишет:
Дана строка, которая состоит из букв латинского алфавита в
нижнем регистре. Реализуйте следующий алгоритм. Если в строке
есть две «одинаковые» буквы, они заменяются одной следующей
для них буквой алфавита.
"aa" => "b", "bb" => "c", .. "zz" => "a".
Заменяемые символы не обязательно смежные. Эта операция
повторяется до тех пор, пока в строке не останется повторяющихся
букв. Порядок символов не важен.
"zzzab"
"azab"
"bzb"
"cz" // return
нижнем регистре. Реализуйте следующий алгоритм. Если в строке
есть две «одинаковые» буквы, они заменяются одной следующей
для них буквой алфавита.
"aa" => "b", "bb" => "c", .. "zz" => "a".
Заменяемые символы не обязательно смежные. Эта операция
повторяется до тех пор, пока в строке не останется повторяющихся
букв. Порядок символов не важен.
"zzzab"
"azab"
"bzb"
"cz" // return
Добрый день!
Вопрос по постановке задачи:
Так должны заменятся две «одинаковые» смежные буквы:
Цитата:
"aa" => "b", "bb" => "c", .. "zz" => "a".
Как быть с этим: "Заменяемые символы не обязательно смежные"?
Например: "aca"
Удачи!