原题:比如给你一个“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,实现了改需求。
好了,大功告成。😁