Swift查找第一个只出现一次的字符

593 阅读1分钟

原题:比如给你一个“asdfaw”,我们需要返回第一个只出现一次的字符,也就是返回s。

这是一个很常见的题目,解决办法有很多种,今天我来分享一下我的方法,欢迎大家斧正。

首先我们遍历一下字符,然后记录一下字符出现的次数

  func getFirstChar(_ str: String) -> String {

    var dic: Dictionary<String, Int> = [:]

    for i in str {

      if let val = dic[String(i)] {  

            dic.updateValue(val + 1, forKey: String(i)) 

        } else {          

            dic.updateValue(1, forKey: String(i))        
        }

        return  "" 

}

这样我们就记录了每个字符出现的次数,我们现在只需要根据之前的顺序再遍历一下,如果第一个字符对应的值是1,就得到我们的结果。

func getFirstChar(_ str: String) -> String {

    var dic: Dictionary<String, Int> = [:]    

    for i in str {        

        if let val = dic[String(i)] {      

            dic.updateValue(val + 1, forKey: String(i))

        } else {            

            dic.updateValue(1, forKey: String(i))        

        }    

    }

    for i in str {        

        if dic[String(i)] == 1 {            

            return String(i)        

        }    
     }

    return ""

}
好了,接下来我们验证一下:(掘金发图片就超过字数限制,烦人啊)

 输入"sabsabcd",得到c,实现了改需求。 

好了,大功告成。😁