71.アルゴリズムは、シンプルかつ迅速最長の回文配列であります

文字回文配列で最長のを見つけるように設定備える大文字と小文字の文字列を、与えられました。

建設プロセスでは、大文字と小文字を区別しますのでご注意ください。以下のような「Aaが」回文文字列として使用することはできません。

注意:
文字列の長さが1010以下であると仮定。

例1:

入力:
"abccccdd"

出力:
7

説明:
私たちは最も長い文字列を作成することができますが回文「dccaccd」、その長さは7です。

ソリューション:

    func longestPalindrome(_ s: String) -> Int {
        var res = 0
        var  my_set = [String]()

         for tmp in 0..<s.count {
            let number =  self.getC(s, Index: tmp)
            if  !my_set.contains(number){
                my_set.append(number)
            }else{
                res += 2
                let index = my_set.firstIndex(of: number)!
                my_set.remove(at: index)
            }
        } 
        
        if my_set.count > 0 {
         
            res += 1
        }
        return res
    }
    
     func getC(_ s: String,Index:Int) -> String
    {
        let begin = s.startIndex
        let start = s.index(begin, offsetBy: Index)
        let end = s.index(begin, offsetBy: Index+1)
        
        let sub4 = s[start..<end]
        
        return String(sub4)
        
    }

 

おすすめ

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