我在 C# 中实现了以下两种方法
private static string FindLongestPalindrome(string s)
{
string largest = "";
for (int i = 1; i < s.Length-1; i++)
{
for (int j = i+1; j <= s.Length; j++)
{
if (IsPalindrome(s.Substring(i, j)))
{
largest = s.Substring(i, j);
}
}
}
return largest;
}
private static bool IsPalindrome(string s)
{
bool isPalindrome = true;
int j = s.Length-1;
for (int i = 0; i < s.Length; i++)
{
if (s[i].ToString().ToLower() != s[j].ToString().ToLower())
{
isPalindrome = false;
break;
}
j--;
}
return isPalindrome;
}
IsPalindrome
检查字符串是否为回文,并FindLongestPalindrome
找出字符串中最长的回文。是的,我意识到这FindLongestPalindrome
不是最有效的并且是二次的。不过,我目前对此并不担心。我只是想知道为什么程序在以下点不断超出范围并抛出异常:
if (IsPalindrome(s.Substring(i, j))) {...}
如何修改这部分,以使每个字符串输入的代码都不会超出范围?