我正在解决一些琐碎的问题来学习 Scala。这是我想出的
def isUnique(str: String): Boolean = {
if (str.length > 128) return false
val uniqueChars = new Array[Boolean](128)
!(str.map(c => addChar(c, uniqueChars)).find(identity).isDefined)
}
def addChar(ch: Char, uniqueChars: Array[Boolean]): Boolean = {
if (uniqueChars(ch)) return true else {
uniqueChars(ch) = true;
return false
}
是这样吗?
请注意,此时我不关心逻辑或优化。我只需要学习 Scala 的做法。
[编辑] 假设我们不想使用字符串 distinct 方法。我只需要验证Scala的功能风格。
好的,所以如果您不想使用distinct
库方法,那么递归通常是可行的方法。
def isUnique(str: String, chrs: Set[Char] = Set()): Boolean =
str.length == 0 ||
!chrs(str.head) &&
isUnique(str.tail, chrs + str.head)
isUnique("abcdexf") // true
isUnique("abcdxxf") // false
isUnique("fbcdexf") // false
isUnique("abdbexf") // false
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句