需要一个以前称为letterCounts的方法"统计每个字母在指定字符串中出现的次数,并将结果作为int数组返回,其中"A"的数量存储在位置[0],"B"的数量保存在位置[1],依此类推:";。
现在我已经尝试创建wordInLetters方法,但我不知道如何继续创建一个按照这篇文章标题所说的方法。
static boolean wordInLetters(final String word, final int[] letterCounts) {
boolean hasEnough = true;
for (int i = 0; i <word.length(); i ++){
if (word.charAt(i) < letterCounts[i]){
hasEnough = false;
}
else {return true;}
}
return hasEnough;
}
}
调用之前生成的函数,将单词作为参数传递。然后将它返回的值与letterCount
数组中的值进行比较。如果它们都是<=
,则返回true。
注意:这假设两个数组具有相同的长度(即ASCII字母表的26
(。
static boolean wordInLetters(final String word, final int[] availableLetters)
{
// Get the count of letters in the word
int [] lettersInWord = letterCounts(word);
// Compare the counts
for (int i = 0; i < lettersInWord.length; i++) {
// If not enough letters, fail
if (availableLetters[i] < lettersInWord[i]) {
return false;
}
}
// If we made it to here, all is good.
return true;
}
不需要调用其他方法。你可以简单地这样做:
static boolean wordInLetters(final String word, final int[] letterCounts) {
int start = 'a';
for (int i = 0; i < word.length(); i ++){
final int x = i;
Long count = Arrays.asList(word.split("")).stream()
.filter(w -> w.equals(word.substring(x, x + 1)))
.count();
if (letterCounts[word.charAt(i) - start] < count) {
return false;
}
}
return true;
}