@HHabar
Новичок

Даны 2 слова, определить можно ли из 1ого слова составить 2ое, при условии что каждую букву из строки 1 можно использовать только один раз?

доброго дня, не могу сообразить что делать дальше
<form action="" method="post">
        <br>
        <input type="text" name="first" autofocus="" placeholder="Первое слово">
        
        <input type="text" name="second" placeholder="Второе слово">
        
        <input type="submit" name="">
        </form>

Как дальше проверить слово чтобы совпадало?
<?php
            $first = $_POST["first"];
            $lenghtF = iconv_strlen($first);
            
            $second = $_POST["second"];
            $lenghtS = iconv_strlen($second);
            
            empty($first) && empty($second) ? exit : '';
            
            for ($i=0; $i <= $lenghtF; $i++ )
            {
                echo $first[$i];
            }
            
            echo "<br /><br />";
            
            for ($i=0; $i <= $lenghtS; $i++ )
            {
                echo $second[$i];
            }
            
            echo "<br /><br />";
            
            for ($i = 0; $i <= $lenghtF; $i++) 
            {
                for($j=0; $j <= $lenghtS; $j++)
                {
                    if ($first[$i] == $second[$j])
                        printf("Буква из слова '%s'подходит к слову '%s' <br />",$first,$second);
                    else 
                    printf("Не подходит<br />");
                }
                // $smb = strpos($first, $second[$i]); // ищем в "почве" нужный нам символ
                // $smb ? $check .= $second[$i] : print("$second[$i] !-> $first<br />"); // создаем из символов слово (для проверки)
                // $first[$smb] = ''; // удаляем символ, который нашли из нашей "почвы"
            }
            
            strcasecmp($second, $check) != 0 ? print("слово " . $second . " не подходит") : print("слово " . $second . " подходит");
        ?>

Код в комментариях не нужен, он не мой.
Я думал если так проверить в циклах каждую букву, то получится сравнить, но бесполезно оказывается, как дальше быть?
  • Вопрос задан
  • 1237 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Даны 2 слова, определить можно ли из 1 слова составить 2, при условии что каждую букву из строки 1 можно использовать только один раз?
Если это читается как "определить можно ли из первого слова составить второе", то алгоритм прост:
  1. Собрать все буквы первого слова в массив.
  2. Собрать все буквы второго слова в массив.
  3. Найти разницу первого массива со вторым - если ничего не вернулось, значит второе слово можно составить из первого.


В третьем пункте я могу ошибиться, сложно на глаз понять, какое решение правильное, да еще и с такой непонятной формулировкой. Но смысл в том, что вашу задачу можно свести к сравнению массивов. А как именно их сравнивать зависит от задачи, я вам рекомендую попридумывать гипотезы и попроверять их, очень полезное упражнение.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы