我不知道如何使此palindrom代码正常工作。
问题可能是字符串分割错误? 感谢您的帮助!
CustomToolbarWrapper
此代码的输出为(不是完整的输出):
发现Palindrom:11110
Palindrom找到:22220
Palindrom找到:33330
发现Palindrom:44440
答案 0 :(得分:0)
使用Linq
public static bool IsPalindrome(string str)
{
return String.Compare(str, new string(Enumerable.Range(1, str.Length).Select(i => str[str.Length - i ]).ToArray())) == 0;
}
没有Linq
public static bool IsPalindrome2(string str)
{
var isPalindrome = true;
for (int i=0; i<str.Length ; i++)
{
if ( str[i] != str[str.Length -i -1])
{
isPalindrome = false;
break;
}
}
return isPalindrome;
}
编辑在您的情况下,您要将字符串长度分成一半。假设您有5位数回文。您将回文的长度除以2 = 2等于5,之后得到它的子字符串
len = str.Length / 2 // 5/2 = 2
part1 = str.substr(0,2);
part2 = str.substr(2,2); // this part is wrong for 5 digit number
4位数字
len = str.Length / 2 // 4/2 = 2
part1 = str.substr(0,2);
part2 = str.substr(2,2); // now it is giving correct result.
检查以下代码以获取解决方案
static bool IsPalindrom(int numb)
{
var productString = Convert.ToString(numb);
var sub1 = productString.Substring(0, productString.Length / 2);
var sub2 = new string(productString.Substring(productString.Length / 2 + (productString.Length % 2 == 1 ? 1 : 0), productString.Length / 2).Reverse().ToArray());
Console.WriteLine(sub1);
Console.WriteLine(sub2);
return sub1.Equals(sub2);
}