题目链接:力扣
思路:题目不难,需要注意下细节。一定不要只用空格作为分隔符,然后每个单词删除不是字母的字符,有的样例是这样的“a,b,c”,这是三个字符,但是没有空格,所以就需要用题目给的标点符号和空格进行分隔,“it's” 题目认为这也是两个单词,所以就直接用题目给的标点符号和空格分隔即可。
分割完成后,可能存在空字符串,所以需要过滤出length>0的字符,最后进行逻辑处理即可(逻辑处理过程看代码,简单题不做说明了)
上代码:
class Solution {
fun mostCommonWord(paragraph: String, banned: Array<String>): String {
val wordMap = HashMap<String, Int>()
val temp = paragraph.split(' ', '!', '?', ',', ';', '.', '\'').filter { it.isNotEmpty() }
temp.forEach { tmpStr ->
val str = tmpStr.toLowerCase()
wordMap[str] = (wordMap[str] ?: 0) + 1
}
var result = ""
val wordSortMap = wordMap.entries.sortedByDescending { it.value }.associateBy({ it.key }, { it.value })
run loop@{
wordSortMap.forEach { (str, _) ->
if (!banned.contains(str)) {
result = str
return@loop
}
}
}
return result
}
}