gectim hocam odemeyi attiginiz iban a
norosezene = 017 burada seven v nerede?
tifowoxoursne =1246, bunun 1246 olduğu nereden anlaşılıyor 2146 niye değil?
Sıralama hep küçükten büyüğe olacaksa çok kolay ki.
Gelen stringi karakterlere böl, sonra tek tek sayılara karşılık gelen karakterler varsa sil ve bunu string bitene kadar hesapla.
harfleri karistirirken v yi silmisim sanirim.
rakamlarin yeri cok onemli degil, dogru rakamlar basildiktan sonra, onlari siralamak kolay zaten.
kelime ile ifade etmesi bence de cok kolay, koda dokene nacizane ufak bir odul gonderdim 👍🏽
Alternatif çözüm;
(Belirtilmemiş ama eğer gerekirse bir kaç değişiklikle sonuç bulunduktan bir sonraki aramayı önceki sonuçtan geriye kalan karakterler üzerinde yapabilirsiniz.)
$_charset = 'owoftnuoer';
$_arr = array( 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine');
$_findNumber = function ( string $chars, string $text ) use ( $_arr ): int|bool
{
$match = null;
foreach( str_split( $text ) as $char ) {
if ( str_contains($chars, $char) ) {
$chars = substr_replace( $chars, '', strpos( $chars, $char ), 1 );
$match .= $char;
}
}
return $match === $text ? array_search( $text, $_arr ) : false;
};
foreach ( $_arr as $text ) {
echo $_findNumber( $_charset, $text );
}
hocam bu kodda 4 satir, yani
int|bool kisminda hata veriyor, ben zaten boyle php fonksiyonu gormedim daha once, ya advanced bir kullanim ben bilmiyorum ya da baska bir dilldeki kullanim ile karistirdiniz galiba