首页 > 其他分享 >LeetCode 409 Longest Palindrome All In One

LeetCode 409 Longest Palindrome All In One

时间:2024-06-11 11:45:12浏览次数:22  
标签:Palindrome return len length set let str LeetCode 409

LeetCode 409 Longest Palindrome All In One

LeetCode 409 最长回文 算法题解

Solutions

// Map
function longestPalindrome(s: string): number {
  const map = new Map();
  let len = 0;
  for(let i = 0; i < s.length; i++) {
    if(map.has(s[i])){
      // 配对,消元
      len += 2;
      map.delete(s[i]);
    } else{
      map.set(s[i], 1);
    }
  }
  // 还有剩余的字符,就选择一个放到,两两配对的回文字符串的中间,结果还是回文字符串
  if(map.size) {
    len += 1;
  }
  return len;
};


// Set
function longestPalindrome(s: string): number {
  const set = new Set();
  let len = 0;
  for(let i = 0; i < s.length; i++) {
    if(set.has(s[i])){
      // 配对,消元
      len += 2;
      set.delete(s[i]);
    } else{
      set.add(s[i]);
    }
  }
  // 还有剩余的字符,就选择一个放到,两两配对的回文字符串的中间,结果还是回文字符串
  if(set.size) {
    len += 1;
  }
  return len;
};

demos

// Set / Map

function longestPalindrome(s: string): number {
  const map = new Map();
  let len = 0;
  for(let i = 0; i < s.length; i++) {
    if(map.has(s[i])){
      // 配对,消元
      len += 2;
      map.delete(s[i]);
    } else{
      map.set(s[i], 1);
    }
  }
  // 还有剩余的字符,就选择一个放到,两两配对的回文字符串的中间,结果还是回文字符串
  if(map.size) {
    len += 1;
  }
  return len;
};

// function longestPalindrome(s: string): number {
//   const set = new Set();
//   let len = 0;
//   for(let i = 0; i < s.length; i++) {
//     if(set.has(s[i])){
//       // 配对,消元
//       len += 2;
//       set.delete(s[i]);
//     } else{
//       set.add(s[i]);
//     }
//   }
//   // 还有剩余的字符,就选择一个放到,两两配对的回文字符串的中间,结果还是回文字符串
//   if(set.size) {
//     len += 1;
//   }
//   return len;
// };

// function longestPalindrome(s: string): number {
//   let target = s[0];
//   for(let i = 0; i < s.length; i++) {
//     let char = s[i];
//     let others = s.slice(0, i) + s.slice(i + 1);
//     let strs = getFullPermutation(others);
//     for(let str of strs) {      
//       if(isPalindrome(str) && str.length > target.length) {
//         // console.log(`✅ str =`, str)
//         target = str;
//       }
//       // console.log(`isPalindrome(char + str) =`, isPalindrome(char + str), char + str)
//       if(isPalindrome(char + str) && (char + str).length > target.length) {
//         // console.log(`✅ char + str =`, char + str)
//         target = (char + str);
//       }
//     }
//   }
//   return target.length;
// };


// // 排列组合 ???
// function getFullPermutation(str: string): string[] {
//   if (str.length === 1) {
//     return [str];
//   } else {
//     const result: string[] = [];
//     //遍历每一项
//     for (let i = 0; i < str.length; i++) {
//       // 当前的元素
//       let current = str[i];
//       // 其他元素 (拼接)
//       let others = str.slice(0, i) + str.slice(i + 1);
//       // 其他元素的全排列 (递归)
//       let temp = getFullPermutation(others);
//       for (let j = 0; j < temp.length; j++) {
//         // 组合
//         const item = current + temp[j];
//         result.push(item);
//       }
//     }
//     return result;
//   } 
// }


/* 
https://www.cnblogs.com/xgqfrms/p/16389706.html
 */

 /* 
 
 
Wrong Answer
21 / 95 testcases passed

Input
s =
"abcbe"

Output
1
Expected
3 

  */

const isPalindrome = (str) => {
  let rs = ``;
  let len = str.length;
  // 逆序字符串
  while(len--){
    rs += str[len];
  }
  return str === rs;
}

// ❌
// const isPalindrome = (str = ``) => {
//   const len = Math.floor(str.length / 2);
//   str = str.toLocaleLowerCase();
//   for (let i = 0; i < len; i++) {
//     if (str[i] !== str[len - i - 1]) {
//      // 提前结束
//       return false;
//     }
//   }
//   return true;
// }

// ❌
// isPalindrome(`aaaa`)
// false

// function isPalindrome(str: string): boolean {
//   let l = 0;
//   let r = str.length - 1;
//   if(str.length <= 2) {
//     return  str[l] === str[r];
//   }
//   while(l < r) {
//     if(str[l] !== str[r]) {
//       break;
//     }
//     l++;
//     r--;
//   }
//   return l === r;
// };


/* 

回文
A palindrome is a string that reads the same forward and backward.

 */

image

https://leetcode.com/problems/longest-palindrome/description/

(

标签:Palindrome,return,len,length,set,let,str,LeetCode,409
From: https://www.cnblogs.com/xgqfrms/p/18241784

相关文章

  • LeetCode 算法:缺失的第一个正数c++
    原题链接......
  • Q25 LeetCode49 字母异位词分组
    难好好看看  1classSolution{2publicList<List<String>>groupAnagrams(String[]strs){3if(strs==null||strs.length==0)4returnnewArrayList<>();5//map中key存储的是字符串中字母排序后新的字符串6Map<Stri......
  • 第一篇 LeetCode(42)接雨水
    LeetCode(42)接雨水力扣官网题目描述:给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入:height=[0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1]表示的高度图,在这种情况下,可以接6个单位的雨水......
  • LeetCode 974 Subarray Sums Divisible by K All In One
    LeetCode974SubarraySumsDivisiblebyKAllInOneLeetCode974能被K整除的子数组之和errosfunctionsubarraysDivByK(nums:number[],k:number):number{//-5/0/5letcount:number=0;//单个元素for(leti=0;i<nums.length;i++){......
  • Q24 LeetCode383 赎金信
    同Q23只需要先将随机字符串挨个存入hashmap中,然后循环遍历给定字符串,只要最后hashmap中size为0,即可返回true 1classSolution{2publicbooleancanConstruct(StringransomNote,Stringmagazine){34HashMap<Character,Integer>smap=newH......
  • Q23 LeetCode242 字母异位词
    1.先进行简单的字符长度判断,不相等直接返回false;2.containsKey()的使用3.在减减循环14-17行里判别key的value是否为0,要不然会报错 1classSolution{2publicbooleanisAnagram(Strings,Stringt){3if(s.length()!=t.length()){4return......
  • 每日一题(LeetCode·704)二分查找
    题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例 2:输入:num......
  • 每日一题(LeetCode 34题,在排序数组中查找元素的第一个和最后一个元素)
    题目:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1,-1]。你必须设计并实现时间复杂度为 O(logn) 的算法解决此问题示例1:输入:nums=[5,7,7,8,8,10],......
  • Leetcode-807
    题目807.保持城市天际线难度:中等给你一座由nxn个街区组成的城市,每个街区都包含一座立方体建筑。给你一个下标从0开始的nxn整数矩阵grid,其中grid[r][c]表示坐落于r行c列的建筑物的高度。城市的天际线是从远处观察城市时,所有建筑物形成的外部轮廓。从东、......
  • Leetcode-342
    题目4的幂难度:简单给定一个整数,写一个函数来判断它是否是4的幂次方。如果是,返回true;否则,返回false。整数n是4的幂次方需满足:存在整数x使得n==4x示例1:输入:n=16输出:true示例2:输入:n=5输出:false示例3:输入:n=1输出:true提示:-231<=n<=......