Bird
Raised Fist0
Kotlinprogramming~10 mins

String comparison (equals, compareTo) in Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to check if two strings are equal using the correct method.

Kotlin
val result = str1.[1](str2)
println(result)
Drag options to blanks, or click blank then click option'
AcompareTo
Bequals
C==
DequalsIgnoreCase
Attempts:
3 left
💡 Hint
Common Mistakes
Using compareTo instead of equals causes confusion because it returns an integer.
Using == which compares content in Kotlin, but is an operator not a method call.
2fill in blank
medium

Complete the code to compare two strings lexicographically and print the result.

Kotlin
val comparison = str1.[1](str2)
println(comparison)
Drag options to blanks, or click blank then click option'
AcompareTo
Bequals
C==
DequalsIgnoreCase
Attempts:
3 left
💡 Hint
Common Mistakes
Using equals instead of compareTo when needing order comparison.
Expecting compareTo to return a boolean.
3fill in blank
hard

Fix the error in the code to correctly check if two strings are equal ignoring case.

Kotlin
val isEqual = str1.[1](str2)
println(isEqual)
Drag options to blanks, or click blank then click option'
A==
BcompareTo
Cequals
DequalsIgnoreCase
Attempts:
3 left
💡 Hint
Common Mistakes
Using equals which is case sensitive.
Using compareTo which returns an integer, not boolean.
4fill in blank
hard

Fill both blanks to create a map of words to their lengths only if the length is greater than 3.

Kotlin
val lengths = buildMap<String, Int> {
  for ([1] in words) {
    if ([2] > 3) {
      this[[1]] = [2]
    }
  }
}
Drag options to blanks, or click blank then click option'
Aword
Blen(word)
Cword.length
Dword.size
Attempts:
3 left
💡 Hint
Common Mistakes
Using len(word) which is Python syntax, not Kotlin.
Using word.size which is not a valid property for String length in Kotlin.
5fill in blank
hard

Fill all three blanks to create a map of uppercase words to their lengths only if length is greater than 4.

Kotlin
val result = buildMap<String, Int> {
  for ([3] in words) {
    if ([2] > 4) {
      this[[1]] = [2]
    }
  }
}
Drag options to blanks, or click blank then click option'
Aword.uppercase()
Bword.length
Cword
Dword.lowercase()
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase() instead of uppercase() for the key.
Using incorrect loop variable names.

Practice

(1/5)
1. Which Kotlin method should you use to check if two strings have exactly the same characters and case?
val a = "Hello"
val b = "hello"
easy
A. a.equals(b)
B. a.compareTo(b)
C. a === b
D. a.equals(b, ignoreCase = true)

Solution

  1. Step 1: Understand equals() method

    The equals() method checks if two strings are exactly the same including case.
  2. Step 2: Compare equals() with other options

    compareTo() returns an order number, === checks reference equality (not content), equals(ignoreCase=true) ignores case, so only equals() matches exact case-sensitive check.
  3. Final Answer:

    a.equals(b) -> Option A
  4. Quick Check:

    Use equals() for exact string match [OK]
Hint: Use equals() for exact case-sensitive string match [OK]
Common Mistakes:
  • Using compareTo() to check equality
  • Assuming === checks content equality
  • Using equals(ignoreCase=true) when case matters
2. Which of the following is the correct syntax to compare two strings str1 and str2 for equality ignoring case in Kotlin?
easy
A. str1.equals(str2, ignoreCase = true)
B. str1.compareTo(str2, ignoreCase = true)
C. str1.equals(str2)
D. str1 == str2

Solution

  1. Step 1: Recall equals() with ignoreCase parameter

    In Kotlin, equals() can take ignoreCase=true to compare strings ignoring case differences.
  2. Step 2: Check other options

    A: equals() without ignoreCase is case-sensitive, B: compareTo(ignoreCase=true) returns Int not Boolean, D: == is case-sensitive.
  3. Final Answer:

    str1.equals(str2, ignoreCase = true) -> Option A
  4. Quick Check:

    Use equals(ignoreCase=true) to ignore case [OK]
Hint: Use equals(ignoreCase=true) to compare ignoring case [OK]
Common Mistakes:
  • Using compareTo(ignoreCase=true) directly (returns Int, not Boolean)
  • Using == which is case-sensitive
  • Forgetting to set ignoreCase=true
3. What will be the output of the following Kotlin code?
val s1 = "apple"
val s2 = "banana"
println(s1.compareTo(s2))
medium
A. A positive number
B. A negative number
C. 0
D. Compilation error

Solution

  1. Step 1: Understand compareTo() behavior

    compareTo() returns a negative number if the first string is lexicographically less than the second.
  2. Step 2: Compare "apple" and "banana" lex order

    "apple" comes before "banana" alphabetically, so compareTo returns a negative number.
  3. Final Answer:

    A negative number -> Option B
  4. Quick Check:

    "apple" < "banana" means compareTo() < 0 [OK]
Hint: compareTo() < 0 means first string is before second [OK]
Common Mistakes:
  • Assuming compareTo() returns boolean
  • Confusing positive and negative return values
  • Thinking compareTo() returns 0 for different strings
4. The following Kotlin code is intended to check if two strings are equal ignoring case, but it does not compile. What is the error?
val a = "Test"
val b = "test"
if (a.compareTo(b, ignoreCase = true)) {
println("Equal")
} else {
println("Not Equal")
}
medium
A. Missing parentheses in if condition
B. ignoreCase is not a valid parameter for compareTo()
C. Strings cannot be compared with compareTo()
D. compareTo() returns Int, cannot be used as Boolean

Solution

  1. Step 1: Check compareTo() return type

    compareTo() returns an Int, not a Boolean, so it cannot be used directly in if condition.
  2. Step 2: Understand how to check equality with compareTo()

    To check equality ignoring case, compareTo() == 0 should be used, not just compareTo() alone.
  3. Final Answer:

    compareTo() returns Int, cannot be used as Boolean -> Option D
  4. Quick Check:

    compareTo() returns Int, use == 0 to check equality [OK]
Hint: compareTo() returns Int; compare with 0 for equality [OK]
Common Mistakes:
  • Using compareTo() directly as Boolean
  • Forgetting to compare result with 0
  • Assuming ignoreCase is invalid parameter (it is valid)
5. You want to sort a list of strings ignoring case in Kotlin. Which code snippet correctly sorts the list val fruits = listOf("Banana", "apple", "Cherry") ignoring case?
hard
A. fruits.sortedBy { it }
B. fruits.sortedBy(String.CASE_INSENSITIVE_ORDER)
C. fruits.sortedWith(String.CASE_INSENSITIVE_ORDER)
D. fruits.sorted()

Solution

  1. Step 1: Understand sorting ignoring case

    To sort strings ignoring case, use a comparator that compares strings case-insensitively.
  2. Step 2: Check options for case-insensitive sorting

    A and D are case-sensitive. C: sortedBy expects key selector, not Comparator (compile error). B uses built-in case-insensitive Comparator correctly.
  3. Final Answer:

    fruits.sortedWith(String.CASE_INSENSITIVE_ORDER) -> Option C
  4. Quick Check:

    Use sortedWith(String.CASE_INSENSITIVE_ORDER) for case-insensitive sort [OK]
Hint: Use sortedWith(String.CASE_INSENSITIVE_ORDER) to ignore case in sort [OK]
Common Mistakes:
  • Using sorted() which is case-sensitive
  • Using sortedBy { it } which is case-sensitive
  • Confusing sortedBy (selector) with sortedWith (Comparator)
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard