Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Заменить повторяющиеся символы на следущую букву алфавита

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не понимаю как это сделать, помогите пожалуйста
Anastasi
Отправлено: 10 Сентября, 2021 - 10:13:37
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Сент. 2021  


Помог: 0 раз(а)




Дана строка, которая состоит из букв латинского алфавита в
нижнем регистре. Реализуйте следующий алгоритм. Если в строке
есть две «одинаковые» буквы, они заменяются одной следующей
для них буквой алфавита.

"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);

вроде удалила первые символы но заменить не смогла.
 
 Top
don.bidon
Отправлено: 10 Сентября, 2021 - 13:01:25
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2019  


Помог: 2 раз(а)




Так заменять и не пытались )
Посимвольно бегите по строке, помня предыдущий символ, если предыдущий символ совпадает с текущим, делайте замену и начинайте сканирование заново.
Или требуют изящного решения?

(Отредактировано автором: 10 Сентября, 2021 - 13:04:45)

 
 Top
Anastasi
Отправлено: 10 Сентября, 2021 - 19:45:08
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Сент. 2021  


Помог: 0 раз(а)




don.bidon пишет:
Так заменять и не пытались )
Посимвольно бегите по строке, помня предыдущий символ, если предыдущий символ совпадает с текущим, делайте замену и начинайте сканирование заново.
Или требуют изящного решения?



Не пыталась так как вообще не понимаю как) Вот прошу помощи. Ваши слова мне понятны но как написать код не знаю, очень плохо разбираюсь в языке пока
 
 Top
don.bidon
Отправлено: 10 Сентября, 2021 - 21:09:04
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2019  


Помог: 2 раз(а)




Давайте постепенно, https://www.php.net/manual/ru/fu...ction.substr.php
 
 Top
Vladimir Kheifets
Отправлено: 12 Сентября, 2021 - 07:29:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Anastasi пишет:
Дана строка, которая состоит из букв латинского алфавита в
нижнем регистре. Реализуйте следующий алгоритм. Если в строке
есть две «одинаковые» буквы, они заменяются одной следующей
для них буквой алфавита.
"aa" => "b", "bb" => "c", .. "zz" => "a".
Заменяемые символы не обязательно смежные. Эта операция
повторяется до тех пор, пока в строке не останется повторяющихся
букв. Порядок символов не важен.

"zzzab"
"azab"
"bzb"
"cz" // return


Добрый день!
Вопрос по постановке задачи:
Так должны заменятся две «одинаковые» смежные буквы:
Цитата:
"aa" => "b", "bb" => "c", .. "zz" => "a".

Как быть с этим: "Заменяемые символы не обязательно смежные"?
Например: "aca"
Удачи!

(Отредактировано автором: 12 Сентября, 2021 - 07:39:20)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB