Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • leetCode409最长字符串

leetCode409最长字符串

题目

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

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

注意: 假设字符串的长度不会超过 1010。

示例 1:

输入: "abccccdd"

输出: 7

解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

解析

偶数的最长 把每个字母都对应的放到数组里面,对象里面放对应的个数

个数为偶数,一定会组成会问的,个数为奇数的减一即可

最总生成的num一定是偶数,如果num小于s的长度,那么num + 1即可

var longestPalindrome = function(s) {
    if(s.length > 1010) {
        return
    }
    let num = 0;
    let nowObj = {},arr =[];
    for(let i = 0; i < s.length; i ++) {
         if(arr.indexOf(s.charAt(i)) == -1) {
            nowObj[s.charAt(i)] = 1
            arr.push(s.charAt(i))
         } else {
            nowObj[s.charAt(i)] += 1
         }
    }
    console.log("nowObj",nowObj)
    console.log("nowObj",arr)
    for(let i = 0; i < arr.length; i ++) {
        if((nowObj[arr[i]]) % 2 == 0) {
            num += nowObj[arr[i]]
        } else {
            num += nowObj[arr[i]] - 1
        }
    }
    if(num < s.length) {
        return num + 1;
    } else {
        return num;
    }
};

console.log(longestPalindrome("cccdd"))

#拓展

js实现找出字符串中的最长回文串

var longestPalindrome = function(s) {
        if(s.length > 1010) {
            return
        }
        let num = 0;
        let str = ''
        for(let i = 0; i < s.length; i ++) {
             str = ''
            for(let j = i; j < s.length ; j ++) {
                str += s.charAt(j)
                if(str.split('').reverse().join('') == str) {
                    if(str.length > num) {
                        num = str.length;
                    }

                }
            }
        }
        return num;
    };

    console.log(longestPalindrome("abccccdd"))
Edit this page
最近更新: 2025/12/2 01:46
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人