我需要一个 dart 函数,它将打印所有给定单词中可能存在的最小字母数。假设单词是“apple,table,rum,bread”。该函数应打印“a”和“r”。让我来解释一下。正如你所看到的三个单词(apple,table,bread)有共同的字母(a,e),该函数应该打印a或e。另一方面,“rum”我没有在其他单词中常见的字母,所以函数应该打印“r”或“u”或“m”。如果你需要任何进一步的解释,请让我知道。谢谢
尝试了下面的代码,但它正在打印“没有常用字母”。
void findCommonLetters(List<String> words) {
if (words.isEmpty) {
print("No common letters.");
return;
}
Set<String> commonLetters = Set.from(words[0].split(''));
for (int i = 1; i < words.length; i++) {
final word = words[i];
final wordLetters = Set.from(word.split(''));
commonLetters = commonLetters.intersection(wordLetters);
}
if (commonLetters.isEmpty) {
print("No common letters.");
} else {
print("Common letters: ${commonLetters.join(", ")}");
}
}
void main() {
List<String> words = ["apple", "banana", "sun"];
findCommonLetters(words);
}
字符串
1条答案
按热度按时间w1jd8yoj1#
我认为你的函数没有做你期望的事情。在apple,banana和sun之间没有共同的字母。这就是你要检查的
commonLetters
的值变化如下:字符串
在您最初的示例
['apple', 'table', 'bread']
中,您的函数工作得很好:型
比较所有单词
相反,如果你想查看集合中每个单词组合之间的常用字母,你可以尝试循环每一对并在那里进行比较。
型
所以问题是,你期望什么?如果你想找到一个集合中 * 所有 * 单词之间的常用字母,恭喜你,你已经做到了:p
否则,您可以查看上面的代码来比较集合中的 * 每对 * 单词。
型
对于
["apple", "banana", "sun"]
,这将返回型