J'ai passé une demi-journée à essayer de comprendre cela et finalement j'ai eu une solution de travail. Cependant, je pense que cela peut être fait de manière plus simple. Je pense que ce code n'est pas vraiment lisible.Comment trouver le premier caractère non-répétitif d'une chaîne?
Problème: Trouvez le premier caractère non répétitif d'une chaîne.
$ string = "abbcabz"
Dans ce cas, la fonction doit générer "c".
La raison pour laquelle j'utilise concaténation au lieu de $input[index_to_remove] = ''
afin de supprimer le caractère d'une chaîne donnée est parce que si je fais ça, il fait juste laisser la cellule vide pour que ma valeur de retour d'entrée de $ [0] ne pas retourne le personnage que je veux retourner.
Par exemple,
$str = "abc";
$str[0] = '';
echo $str;
Affichera "bc"
Mais en fait, si je test,
var_dump($str);
il me donnera:
string(3) "bc"
ici est mon intention:
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
code:
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];
}
+1 pour la shortness – whiskeysierra
+2 pour la shortness, merci! –