私がインタビューをしているとしたら、私は次のようなことを望んでいます(必ずしも期待しているわけではありませんが)。
def string = 'babcbcd'
def singles = string.toList().groupBy{ it }.findAll{ it.value.size() == 1 }.collect{ it.key }
println "First char that appears once: " + string.find{ singles.contains it }
重要なのは真ん中の線です。文字列を文字のリストとして受け取り、リストを文字ごとにグループ化して、一度だけ発生しなかったものをすべて除外し、最後に一度発生した文字のリストを生成します。次に、そのリストにある最初の文字を文字列で検索します。
Javaでこれほどエレガントになることは不可能なので、Groovyです。たぶん、JDK8がついにそれを作ったら...
更新:@groovyのHaskellソリューションに触発されたより簡潔なバージョン。私は今、私の最初のものの不器用さにほとんど当惑しています:)
def firstUnique(seq) { seq.findAll{ seq.count(it) == 1 }.first() }