# Find first repeating Char in String

Given a string, find the first repeating character in it.

Examples:

• firstUnique("Vikrant")None
• firstUnique("VikrantVikrant")Some(V)

Scala implementation:

object FirstUniqueChar extends App {
def firstUnique(s: String): Option[Char] = {
val countMap =  (s groupBy (c=>c)) mapValues(_.length)
def checkOccurence(s1: String ): Option[Char] = {
else if (s1.length == 1) None
else checkOccurence(s1.tail)
}
checkOccurence(s)
}
println(firstUnique("abcdebC"))
println(firstUnique("abcdef"))
}


I also have a followup question. What is the recommended way if I do not want to solve this problem with recursion? Instead of using the checkOccurence method I can traverse through the string and break when I find the first element with a count more than 1. But that will require a break, which is discouraged in Scala.

Your checkOccurrence(s) is just a clumsy way to write s.find(countMap(_) > 1).
You can significantly simplify the solution by taking advantage of .distinct.
def firstUnique(s: String): Option[Char] =

• Slightly more concise syntax for a very nice answer: collectFirst{case (a,b) if a != b => a}