arrays — проверяет, можно ли создать слово из случайной буквенной строки, используя переполнение стека

<?php
$randomstring = 'raabccdegep';
$arraylist = array("car", "egg", "total");
?>

Выше $randomstring это строка, которая содержит несколько букв алфавита.
И у меня есть массив называется $arraylist которые содержат 3 слова, такие как 'car' , 'egg' , 'total',

Теперь мне нужно проверить строку, используя слова в массиве, и напечатать, если слово может быть создано с использованием строки.
Для примера мне нужен вывод Like.

car is possible.
egg is not possible.
total is not possible.

Также, пожалуйста, проверьте повторение письма. т.е. beep тоже возможно. Поскольку строка содержит два e, Но egg невозможно, потому что есть только один g,

0

Решение

function find_in( $haystack, $item ) {
$match = '';
foreach( str_split( $item ) as $char ) {
if ( strpos( $haystack, $char ) !== false ) {
$haystack = substr_replace( $haystack, '', strpos( $haystack, $char ), 1 );
$match .= $char;
}
}
return $match === $item;
}

$randomstring = 'raabccdegep';
$arraylist = array( "beep", "car", "egg", "total");

foreach ( $arraylist as $item ) {
echo find_in( $randomstring, $item ) ? " $item found in $randomstring." : " $item not found in $randomstring.";
}
2

Другие решения

This should do the trick:
<?php
$randomstring = 'raabccdegep';
$arraylist = array("car", "egg", "total");

foreach($arraylist as $word){
$checkstring = $randomstring;
$beMade = true;
for( $i = 0; $i < strlen($word); $i++ ) {
$char = substr( $word, $i, 1 );
$pos = strpos($checkstring, $char);
if($pos === false){
$beMade = false;
} else {
substr_replace($checkstring, '', $i, 1);
}
}
if ($beMade){
echo $word . " is possible \n";
} else {
echo $word . " is not possible \n";
}
}
?>
0

По вопросам рекламы [email protected]