PHPでは、連想配列のキーは登録された順番を保持する。
これが非常にありがたい。
この性質を利用してこの関数firstUniqはシンプルに実装できる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php $str = "cbaedcba"; echo firstUniq ( $str ); function firstUniq($str) { $inarr = str_split ( $str ); $a = [ ]; foreach ( $inarr as $ch ) { if (array_key_exists ( $ch, $a )) { /* ある */ $a [$ch] += 1; } else { /* ない */ $a [$ch] = 1; } } foreach ( $a as $k => $v ) { if ($v === 1) { return $k; } } return null; } |
1 |
e |