查找单词包含非重复的特定字母?

时间:2013-01-17 10:56:26

标签: php string

我有一个英文单词列表,我想知道哪些单词有特定字母,这些字母只能使用一次。我正在使用PHP。

所以如果这些字母是'abcde',那么这些字应该像'cab','bed'......但不是'dad'。我目前的尝试是

if (preg_match("/([abcde]+)/i", $w))
    echo $w, "\r\n";

但是这只列出了包含其中一个字母'abcde'的所有单词。那么有人能告诉我该怎么做吗?

2 个答案:

答案 0 :(得分:1)

识别每个$ word是否仅包含$ letters字符串中的字母,而不重复

$letters = 'abcde';

$words = array(
    'cab',
    'bed',
    'dad'
);

foreach($words as $word) {
    $valid = testWord($word, $letters);
    echo $word, ' => ', (($valid) ? 'Yes' : 'No'), PHP_EOL;
}

function testWord($word, $letters)
{
    $kChars = array_intersect(
        str_split($letters),
        str_split($word)
    );

    return count($kChars) == strlen($word);
}

答案 1 :(得分:1)

您可以尝试:

$letters     = str_split('abcde');
$wordLetters = str_split($w);

if ( count(array_intersect($letters, $wordLetters)) == count($wordLetters) ) {
  echo $w, "\r\n";
}