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

使用Swift查找字符串中的第一个非重复字符
EN

Stack Overflow用户
提问于 2014-12-07 08:08:12
回答 7查看 3.2K关注 0票数 2

这将查找数组中的重复项,但我要查找的是能够找到字符串中第一个非重复字符的内容。我一直在试着找出一种方法来做这件事,但我想不出来。这是我最接近的一次了。

代码语言:javascript
复制
var strArray = ["P","Q","R","S","T","P","R","A","T","B","C","P","P","P","P","P","C","P","P","J"]

println(strArray)

var filter = Dictionary<String,Int>()
var len = strArray.count
for var index = 0; index < len  ;++index {
var value = strArray[index]
if (filter[value] != nil) {
    strArray.removeAtIndex(index--)
    len--
}else{
    filter[value] = 1
}
}
println(strArray)
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-12-07 08:37:56

为了判断字符是否重复,遍历整个数组一次,递增字典中出现的次数:

代码语言:javascript
复制
let characters = ["P","Q","R","S","T","P","R","A","T","B","C","P","P","P","P","P","C","P","P","J"]

var counts: [String: Int] = [:]
for character in characters {
    counts[character] = (counts[character] ?? 0) + 1
}


let nonRepeatingCharacters = characters.filter({counts[$0] == 1})
// ["Q", "S", "A", "B", "J"]
let firstNonRepeatingCharacter = nonRepeatingCharacters.first!
// "Q"
票数 11
EN

Stack Overflow用户

发布于 2020-02-07 19:53:01

这是一个简单的解决方案

代码语言:javascript
复制
let inputString = "PQRSTPRATBCPPPPPCPPJ"

func nonRepeat (_ input: String) -> String {
    for char in input {
        if input.firstIndex(of: char) == input.lastIndex(of: char) {
            return String(char)
        }
    }
    return ""
}
print (nonRepeat(inputString))

在上面的示例中,它将打印"Q“

票数 5
EN

Stack Overflow用户

发布于 2018-06-02 04:45:15

代码语言:javascript
复制
func firstNonRepeatedCharacter(input: String) -> Character?{
    var characterCount : [Character : Int] = [:]
    var uniqueCharacter: Character?

    for character in input{
        if let count = characterCount[character]{
            characterCount[character] = count + 1
            if(uniqueCharacter == character)
            {
                uniqueCharacter = nil
            }
        }
        else{
            characterCount[character] = 1
            if(uniqueCharacter == nil){
                uniqueCharacter = character
            }
        }
    }
    return uniqueCharacter
}

无需额外的循环即可从characterCount字典中查找字符

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27338045

复制
相关文章

相似问题

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