Ios Swift:重复字母变成字符串中的数字

Ios Swift:重复字母变成字符串中的数字,ios,swift,string,Ios,Swift,String,比如说,我有一根绳子 var abc : String = "aaaabbbbbbbccddd" 我需要一个算法,如何将这些重复字母更改为一行中超过2个重复字母的数量,从而使给定字符串变为 abc = "a4b7ccd3" 任何提示都将不胜感激。让我们从以下字符串开始: let abc : String = "aaaabbbbbbbccddde" 并将输出放在一个新变量中 var result = "" 让我们使用索引来遍历字符串中的字符 var index = abc.startInd

比如说,我有一根绳子

var abc : String = "aaaabbbbbbbccddd"
我需要一个算法,如何将这些重复字母更改为一行中超过2个重复字母的数量,从而使给定字符串变为

abc = "a4b7ccd3"

任何提示都将不胜感激。

让我们从以下字符串开始:

let abc : String = "aaaabbbbbbbccddde"
并将输出放在一个新变量中

var result = ""
让我们使用索引来遍历字符串中的字符

var index = abc.startIndex

while index < abc.endIndex {
    //There is already one character :
    let char = abc[index]
    var count = 0

    //Let's check the following characters, if any
    repeat {
        count += 1
        index = abc.index(after: index)
    } while index < abc.endIndex && abc[index] == char

    //and update the result accordingly 
    result += count < 3 ?
        String(repeating: char, count: count) :
        String(char) + String(count)
}

小注释:对内部循环使用repeat{}while可以稍微缩短它,避免重复索引增量。@MartinR:好主意!我会根据你的建议更新答案
print(result)  //a4b7ccd3e