leetcode刷题记录(JS)

122 阅读1分钟

409. 最长回文串

给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。

在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。

示例 1:

输入: s = "abccccdd"
输出: 7
解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

示例 2:

输入: s = "a"
输入: 1
var longestPalindrome = function (s) {
  const map = new Map();
  for (const c of s) {
    if (map.has(c)) map.set(c, map.get(c) + 1);
    else map.set(c, 1);
  }

  let res = 0;
  let hasOne = false;
  for (const times of map.values()) {
    res += times >> 1;
    if (times % 2 !== 0) hasOne = true;
  }

  return res * 2 + (hasOne ? 1 : 0);
};

226. 翻转二叉树

难度简单1414收藏分享切换为英文接收动态反馈

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

 

示例 1:

输入: root = [4,2,7,1,3,6,9]
输出: [4,7,2,9,6,3,1]

示例 2:

输入: root = [2,1,3]
输出: [2,3,1]

示例 3:

输入: root = []
输出: []
var mirrorTree = function(root) {
    if(root === null) return root;

    [root.left, root.right]=[root.right, root.left];
    mirrorTree(root.left);
    mirrorTree(root.right);

    return root;
};