public class Solution {
public string LongestPalindrome(string str) {
if(string.IsNullOrEmpty(str)) return str;
int start = 0, end = 0;
//将当前位置最长回文子串与已知最长回文子串对比
for(int i = 0; i < str.Length; i++){
int len1 = ExpandAroudCenter(str, i, i);
int len2 = ExpandAroudCenter(str, i, i+1);
int len = Math.Max(len1, len2);
if(len > end - start){
start = i - (len - 1)/2;
end = i +len/2;
}
}
return str.Substring(start, end - start + 1);
}
//找到以当前位置为中心的最长回文子串
private static int ExpandAroudCenter(string str, int left, int right){
int L = left, R = right;
while(L>=0 && R< str.Length && str[L] == str[R]){
L--;
R++;
}
return R - L - 1;
}
}
C#查找输入字符串中最长回文串
最新推荐文章于 2024-06-19 16:14:51 发布