我有一个英文单词列表,我想知道哪些单词有特定字母,这些字母只能使用一次。我正在使用PHP。
所以如果这些字母是'abcde',那么这些字应该像'cab','bed'......但不是'dad'。我目前的尝试是
if (preg_match("/([abcde]+)/i", $w))
echo $w, "\r\n";
但是这只列出了包含其中一个字母'abcde'的所有单词。那么有人能告诉我该怎么做吗?
答案 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";
}