[409] C言語ブラシLeetCode最長パリンドローム配列(E)

文字回文配列で最長のを見つけるために、構成された大文字と小文字の文字列下記のものを含む、与えられました。

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

注:
文字列の長さを超える1010ではないと仮定。

例1:

入力:
"abccccdd"

出力:
7

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

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/longest-palindromeは
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

文字、パリンドロームは、当然のことながら、[128] = {0}ハッシュ文字列直接INT ARRを考慮し、バックは簡単です。

int longestPalindrome(char * s){
    int len = strlen(s);
    int i;
    int retmax = 0;
    int arr[128] = {0};
    int flag = 0;
    
    for (i = 0; i < len; i++) {
        arr[s[i]]++;
    }
    
    for (i = 0; i < 128; i++) {
        if(arr[i] % 2) {
            retmax += arr[i] - 1;
            flag = 1;
        } else {
            retmax += arr[i];
        }
    }
    
    retmax = retmax + flag;
    
    return retmax;
}

 

公開された140元の記事 ウォン称賛17 ビュー110 000 +

おすすめ

転載: blog.csdn.net/jin615567975/article/details/104416506