首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找字符串中的第一个重复字符

查找字符串中的第一个重复字符
EN

Code Review用户
提问于 2019-01-09 00:53:21
回答 1查看 98关注 0票数 0

给定一个字符串,查找其中的第一个重复字符。示例:

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

Scala实现:

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

我也有一个跟进问题。如果我不想用递归来解决这个问题,那么推荐的方法是什么?当我发现第一个元素的计数超过1时,我可以不使用checkOccurence方法遍历字符串和break,但这需要中断,这在Scala中是不鼓励的。

EN

回答 1

Code Review用户

回答已采纳

发布于 2019-01-09 21:04:33

您的checkOccurrence(s)只是编写D0的一种笨拙的方式

您可以利用.distinct大大简化解决方案。

代码语言:javascript
复制
def firstUnique(s: String): Option[Char] =
  s.zipAll(s.distinct, '\u0000', '\u0000')
   .collectFirst({ case ab if ab._1 != ab._2 => ab._1 })
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/211151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档