78圧縮アルゴリズムは、シンプルかつ迅速な文字列です。

圧縮するin-placeアルゴリズムを使用して、文字の集合を考えます。

圧縮後の長さは、常に、元の配列の長さ以下でなければなりません。

配列の各要素は、1つの文字(整数int型)の長さであるべきです。

入力配列のin situ変更が完了した後、配列の新しい長さを返します。

 

例1:

输入:
[ "A"、 "A"、 "B"、 "B"、 "C"、 "C"、 "C"]

出力:
戻り6、入力配列の最初の6文字は次のようになります[ "A"、 "2 "、 "B"、 "2"、 "C"、 "3"]

説明:
"AA"の代わりに"A2"です。「BB」は、「B2」に置き換えられます。「CCC」は、「C3」に置き換えられます。
例2:

入力:
[ "A"]

出力:
1を返し、文字入力配列をする必要があります前に:[「A」]

説明:
いいえ文字列を置換されていません。

ソリューション:

func compress(_ chars: inout [Character]) -> Int {
       let count:Int = chars.count
        guard count > 0 else {
            return 0
        }
        var result:String = ""
        
        var first:Character = chars[0] as Character
        var charCount:Int = 0
        
        for i in 0..<count {
            
            let temp:Character = chars[i] as Character
            
            if temp == first {
                charCount += 1
            } else {
                result.append(first)
                if charCount > 1 {
                    result.append("\(charCount)")
                }
                first = temp
                charCount = 1
            }
        }
        
        result.append(first)
        if charCount > 1 {
            result.append("\(charCount)")
        }
        return result.count
    }

 

おすすめ

転載: blog.csdn.net/huanglinxiao/article/details/93459694