Я потратил полдня, пытаясь выяснить это, и, наконец, я получил рабочее решение.Однако я чувствую, что это можно сделать проще.Я думаю, что этот код на самом деле не читабелен.
Проблема: Найти первый неповторяющийся символ из строки.
$ string = "abbcabz"
В этом случаефункция должна вывести «c».
Причина, по которой я использую конкатенацию вместо $input[index_to_remove] = ''
для удаления символа из заданной строки, заключается в том, что если я это сделаю, то на самом деле просто оставлю пустую ячейку, так что мое возвращаемое значение$ input [0] не возвращает символ, который я хочу вернуть.
Например,
$str = "abc";
$str[0] = '';
echo $str;
Это выведет "bc"
Но на самом деле, если ятест,
var_dump($str);
это даст мне:
string(3) "bc"
Вот мое намерение:
Given: input
while first char exists in substring of input {
get index_to_remove
input = chars left of index_to_remove . chars right of index_to_remove
if dupe of first char is not found from substring
remove first char from input
}
return first char of input
Код:
function find_first_non_repetitive2($input) {
while(strpos(substr($input, 1), $input[0]) !== false) {
$index_to_remove = strpos(substr($input,1), $input[0]) + 1;
$input = substr($input, 0, $index_to_remove) . substr($input, $index_to_remove + 1);
if(strpos(substr($input, 1), $input[0]) == false) {
$input = substr($input, 1);
}
}
return $input[0];
}