- 长臂猿-企业应用及系统软件平台
 
            
声音替换。


下面是今天的算法题
void expandAroundCenter(const char *s, int left, int right, int *start, int *maxLen) {while (left >= 0 && right < strlen(s) && s[left] == s[right]) {left--;right++;}if (*maxLen < right - left - 1) {*start = left + 1;*maxLen = right - left - 1;}}char* longestPalindrome(char* s) {int start = 0, maxLen = 0;for (int i = 0; i < strlen(s); i++) {expandAroundCenter(s, i, i, &start, &maxLen); // 奇数长度expandAroundCenter(s, i, i + 1, &start, &maxLen); // 偶数长度}char *result = (char*)malloc(sizeof(char) * (maxLen + 1));strncpy(result, s + start, maxLen);result[maxLen] = '\0';return result;}
public class Solution {public String longestPalindrome(String s) {if (s == null || s.length() < 1) return "";int start = 0, end = 0;for (int i = 0; i < s.length(); i++) {int len1 = expandAroundCenter(s, i, i); // 奇数长度int len2 = expandAroundCenter(s, i, i + 1); // 偶数长度int len = Math.max(len1, len2);if (len > end - start) {start = i - (len - 1) / 2;end = i + len / 2;}}return s.substring(start, end + 1);}private int expandAroundCenter(String s, int left, int right) {while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {left--;right++;}return right - left - 1;}}
def longest_palindrome(s: str) -> str:def expand_around_center(left: int, right: int) -> str:while left >= 0 and right < len(s) and s[left] == s[right]:left -= 1right += 1return s[left + 1:right]if not s:return ""start, end = 0, 0for i in range(len(s)):len1 = len(expand_around_center(i, i))len2 = len(expand_around_center(i, i + 1))max_len = max(len1, len2)if max_len > end - start:start = i - (max_len - 1) // 2end = i + max_len // 2return s[start:end + 1]
s = "babad"print(longest_palindrome(s))
