Kotlin 如何检查字符串是否可以由指定的字符列表组成?

Kotlin 如何检查字符串是否可以由指定的字符列表组成?,kotlin,Kotlin,我一直在尝试创建一个方法,如果可以使用chars创建单词,该方法将返回true。 例如,listOf('a','b','o'),“baobab”)->true,它可以正常工作,但是输入:listOf('a','a','aa”)它返回false而不是true。你能告诉我怎么了吗 funcanbuildfrom(chars:List,word:String):布尔值{ 变量i=0 用于(以字符表示的项目){ for(word中的字符){ if(char.toLowerCase()==item.toL

我一直在尝试创建一个方法,如果可以使用chars创建单词,该方法将返回true。 例如,
listOf('a','b','o'),“baobab”)->true,它可以正常工作,但是输入:
listOf('a','a','aa”)
它返回false而不是true。你能告诉我怎么了吗

funcanbuildfrom(chars:List,word:String):布尔值{
变量i=0
用于(以字符表示的项目){
for(word中的字符){
if(char.toLowerCase()==item.toLowerCase()){
我++
}
}
}
返回值(i==字长)
}

这里有一个简单的方法:

funcanbuildfrom(chars:List,word:String)=word.all{char->chars中的char}
如果希望它不区分大小写:

funcanbuildfrom(chars:List,word:String)=chars.map(Char::toLowerCase)。让{lowerCasedChars->
word.all{char->
小写字符中的char.toLowerCase()
}
}
该函数可以通过使其成为
String
的扩展,并接受包含
的更广泛接口来改进。i、 e.
String.canBuildFrom(字符:集合)

代码不起作用的原因:函数接受字符列表作为输入。对于字符串中的每一个字符,
i
增加该字符在列表中出现的次数

以下是一些可能出错的输入:

listOf('a','a','a'),“abb”->true//应为false
listOf('a','b','c','c'),“abcbacbc”->false//应为true

感谢您的解释,但是现在测试没有通过,因为其中一个测试的大写字母是:listOf('O'),“O”)返回false。我尝试添加.toLowerCase(),但没有成功