leetcode5962. 连接两字母单词得到的最长回文串(mid)(69双周赛)

连接两字母单词得到的最长回文串


力扣链接

  • 第四题没有思路,只能做到第三题了
    leetcode5962. 连接两字母单词得到的最长回文串(mid)(69双周赛)
    leetcode5962. 连接两字母单词得到的最长回文串(mid)(69双周赛)

解题思路

  • hash表

代码

	public static int longestPalindrome(String[] words) {
        int len = 0;
        Map<String, Integer> map = new HashMap<>();
        for (String word : words) {
            char c1 = word.charAt(0);
            char c2 = word.charAt(1);
            char[] chars = new char[]{c2, c1};
            String key = String.valueOf(chars);
            if (map.containsKey(key)) {
                len += 4;
                int num = map.get(key);
                if (num == 1) {
                    map.remove(key);
                } else {
                    map.put(key, num - 1);
                }
            } else {
                map.put(word, map.getOrDefault(word, 0) + 1);
            }
        }

        //最后统计一个两个字符相同的字符串
        for (String s : map.keySet()) {
            char c1 = s.charAt(0);
            char c2 = s.charAt(1);
            if (c1 == c2) {
                len += 2;
                break;
            }
        }

        return len;
    }

复杂度

  • 时间复杂度: O(n)
  • 空间复杂度: O(n)
上一篇:Bash编程(五)


下一篇:【剑指Offer】个人学习笔记_20_表示数值的字符串