Leetcode 51420:最长回文子串-最长公共前缀-有效括号
Posted hello,是翠花呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 51420:最长回文子串-最长公共前缀-有效括号相关的知识,希望对你有一定的参考价值。
自己的思路,仅供参考。
一。给你一个字符串 s,找到 s 中最长的回文子串。
/*给你一个字符串 s,找到 s 中最长的回文子串。*/
function longestPalindrome(s) {
if (s.length === 1) {
return s
}
if (isReverse(s)) {
return s
}
let len = 0
let newS = s
let str = ''
let sLength = s.length - 1
let n = Math.floor(s.length / 2) // 9/2=4.5
let m = 0
while (m <= n) {
let ss = newS.slice(m, -m)
if (isReverse(ss)) {
if (ss.length > len) {
len = ss.length
str = ss
}
}
m++
}
let i = 0
while (i < sLength) {
let ss = newS.slice(i)
if (isReverse(ss)) {
if (ss.length > len) {
len = ss.length
str = ss
}
}
i++
}
let j = sLength
while (j >= 0) {
let ss = newS.slice(0, -j)
if (isReverse(ss)) {
if (ss.length > len) {
len = ss.length
str = ss
}
}
j--
}
let h = 0
let ss
let u = sLength
while (u >= 0) {
for (h = 0; h < sLength; h++) {
ss = newS.slice(h, -u)
if (isReverse(ss)) {
if (ss.length > len) {
len = ss.length
str = ss
}
}
}
u--
}
return str
}
function isReverse(s) {
let i = Math.floor(s.length / 2)
while (i >= 0) {
if(s[i] != s[s.length - i-1]){
return false
}
i--
}
return true
}
二。编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
/*编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。*/
function longestCommonPrefix(strs) {
if (strs.length === 1) {
return strs[0]
}
let minL = ''
for (let i = 0; i < strs.length; i++) {
if (!minL) {
minL = strs[i]
} else {
if (strs[i].length < minL.length) {
minL = strs[i]
}
}
}
if(!minL) {
return ''
}
let str = ''
let n
for (let i = 0; i < minL.length; i++) {
for (let j = 0; j < strs.length; j++) {
if(strs[j][i] == minL[i]) {
n = true
} else {
n = false
break
}
}
if (n) {
str+=minL[i]
} else {
return str
}
}
return str
}
三。给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
/*给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。*/
function isValid(s) {
if (s.length % 2 !== 0) {
return false
}
let stack = []
let left1 = '{'
let right1 = '}'
let left2 = '('
let right2 = ')'
let left3 = '['
let right3 = ']'
for (let i = 0; i < s.length; i++) {
if (!stack.length) {
stack.push(s[i])
} else {
if (stack[stack.length - 1] === left1 && s[i] === right1 || stack[stack.length - 1] === left2 && s[i] === right2 || stack[stack.length - 1] === left3 && s[i] === right3) {
stack.pop()
} else {
stack.push(s[i])
}
}
}
if (stack.length) {
return false
}
return true
}
以上是关于Leetcode 51420:最长回文子串-最长公共前缀-有效括号的主要内容,如果未能解决你的问题,请参考以下文章