如何检查 Kotlin 中的三个数字是否不同?

How to check if three numbers are different in Kotlin?

我正在 activity 学习我无法理解的 Kotlin。我是编码和 Kotlin 的新手,所以请原谅我的错误和缺乏知识。

这是activity的描述:

编写一个程序,读取三个数字并检查它们是否都不同(即没有数字等于任何其他数字)。 程序是输出true或false。

示例输入 1:

5
5
9

示例输出 1:

false

示例输入 2:

1
2
3

示例输出 2:

true

我尝试了不同的方法,但我 none 的方法都奏效了,所以如果有人能帮助我,我将不胜感激。

fun main() {
    val num = readLine()!!.toInt()
    val num1 = readLine()!!.toInt()
    val num2 = readLine()!!.toInt()
}

构建一个列表,并从列表中创建一组。集合不能包含重复条目。现在比较列表和集合之间的元素数量。

  val xs = listOf(num,num1,num2)
  val result = xs.size == xs.toSet().size   // true or false

如果总是三个数字你可以这样写:

  val result = setOf(num, num1, num2).size == 3

在这里您只需检查每对是否不同。所以你想要这样的东西:

fun areAllDifferent(n1: Int, n2: Int, n3: Int) = /* n1 != n2 and n2 != n3 and n1 != n3 */

然后可以将其扩展为使用相同的逻辑比较 n 个数字,方法是遍历每一对并检查是否相等:

fun areAllDifferent(vararg numbers: Int) {

   for (i in numbers.indices) {

        for (j in numbers.indices) {

            if (/* the ith and jth numbers are equal and i != j */) return false
    }

    return true
}

然而,为了获得更简洁的解决方案,我会看一下@Twistleton 的回答。它还具有较低的时间复杂度(O(n)O(n<sup>2</sup>) 相比)但是请注意,它引入了额外的 space 复杂度 (O(n)) 如果 n 很大。