h1h*_*1h1 1 functional-programming unique kotlin
我的函数应该返回一个布尔值,指示输入字符串是否包含所有唯一字符。
例如“abc”返回真,“abca”返回假
fun uniqueCharacters(s: String): Boolean = s.groupBy { it }
.values
.stream()
.allMatch { it.size == 1 }
Run Code Online (Sandbox Code Playgroud)
有没有更有效的方法来解决这个问题?如果我以非功能方式解决这个问题,我会将所有字符存储在 Map 中,该值是到目前为止该字符的计数,如果它大于 1,则中断并返回 false。
不确定如何最好地将其转换为功能性 Kotlin 代码。
您可以使用all函数并Set::add作为它的谓词
fun main() {
println("abc".allUnique()) // true
println("abca".allUnique()) // false
}
fun String.allUnique(): Boolean = all(hashSetOf<Char>()::add)
Run Code Online (Sandbox Code Playgroud)
很懒,函数找到第一个重复就返回结果
| 归档时间: |
|
| 查看次数: |
968 次 |
| 最近记录: |