some more problems

This commit is contained in:
2022-06-19 22:57:33 +01:00
parent 3cc60d0431
commit 4a14268528
7 changed files with 328 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
class Solution:
def longestPalindrome(self, s: str) -> str:
max_palindrome = ""
for idx in range(len(s)):
l, r, odd, even = idx, idx, True, True
while odd or even:
if odd:
if r == len(s) or s[l] != s[r]:
odd = False
if r - l - 1 > len(max_palindrome):
max_palindrome = s[l + 1:r]
if even:
if r == len(s) - 1 or s[l] != s[r + 1]:
even = False
if r - l > len(max_palindrome):
max_palindrome = s[l + 1:r + 1]
if l == 0:
if even and r - l + 2 > len(max_palindrome):
max_palindrome = s[l:r + 2]
elif odd and r - l + 1 > len(max_palindrome):
max_palindrome = s[l:r + 1]
break
l -= 1
r += 1
return max_palindrome

View File

@@ -0,0 +1,38 @@
impl Solution {
pub fn longest_palindrome(s: String) -> String {
let mut max = "";
let bytes = s.as_bytes();
for idx in 0..s.len() {
let (mut l, mut r, mut odd, mut even) = (idx, idx, true, true);
while odd || even {
if odd {
if r == s.len() || bytes[l] != bytes[r] {
odd = false;
if r - l - 1 > max.len() {
max = s.get(l + 1..r).unwrap();
}
}
}
if even {
if r == s.len() - 1 || bytes[l] != bytes[r + 1] {
even = false;
if r - l > max.len() {
max = s.get(l + 1..r + 1).unwrap();
}
}
}
if l == 0 {
if even && r - l + 2 > max.len() {
max = s.get(l..r + 2).unwrap();
} else if odd && r - l + 1 > max.len() {
max = s.get(l..r + 1).unwrap();
}
break;
}
l -= 1;
r += 1;
}
}
max.to_string()
}
}