409. 最长回文串
这算哪门子贪心?
var longestPalindrome = function(s) {let map = new Map();for (let char of s) {map.set(char, (map.get(char) || 0) + 1);}let totalNum = 0;let oddNum = 0;let hasOdd = false;for (let [key, value] of map) {if (value % 2) { // 奇数oddNum += value - 1;hasOdd = true;} else {totalNum += value;}}hasOdd && oddNum++; // 所有的奇数和 统一 加1totalNum += oddNum;return totalNum;};

var longestPalindrome = function(s) {let map = new Map();for (let char of s) {map.set(char, (map.get(char) || 0) + 1);}let totalNum = 0;for (let [key, value] of map) {if (totalNum % 2 === 0) {if (value % 2 === 1) {totalNum += value} else {totalNum += Math.floor(value / 2) * 2;}} else {totalNum += Math.floor(value / 2) * 2;}}return totalNum;};
写法优化:
var longestPalindrome = function(s) {let map = new Map();for (let char of s) {map.set(char, (map.get(char) || 0) + 1);}let totalNum = 0;for (let [key, value] of map) {if ((totalNum % 2 === 0) && (value % 2 === 1)) {totalNum += value;} else {totalNum += Math.floor(value / 2) * 2;}}return totalNum;};
