[Leetcode-算法]409.最长回文串

题目链接:戳这里
题目描述:[Leetcode-算法]409.最长回文串_第1张图片
我的憨憨解题思路:
将字符串中每一个字符作为键值key存入HashMap中,字符出现的次数作为value存入。
如果出现次数为偶数则直接加入到结果中;
如果出现次数为奇数,分两种情况:
若加入到结果前,已有出现次数为奇数次的加入到结果中,则加入此出现次数/2;
若加入到结果前,没有其它出现次数为奇数次的加入到结果中,则直接将此出现次数加入到结果中。
java代码:

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

    class Solution {
        public int longestPalindrome(String s) {
            if(s==""){
                return 0;
            }
            Map tmp=new HashMap<>();
            for(int i=0;i col=tmp.values();
            int sum=0;
            int flag=0;
            for (Iterator it = col.iterator(); it.hasNext(); ) {
                int i = it.next();
                if(i%2==0){
                    sum=sum+i;
                }else {
                    if(flag!=0){
                        sum=sum+2*(i/2);
                    }else {
                        sum=sum+i;
                        flag++;
                    }
                }
            }
            return sum;
        }
    }

大佬的代码:

class Solution {
    public int longestPalindrome(String s) {
        int[] count = new int[128];
        for (char c: s.toCharArray())
            count[c]++;

        int ans = 0;
        for (int v: count) {
            ans += v / 2 * 2;
            if (v % 2 == 1 && ans % 2 == 0)
                ans++;
        }
        return ans;
    }
}

你可能感兴趣的:(java,leetcode,hashmap)