110,545
社区成员
发帖
与我相关
我的任务
分享
// 如果是回文就返回True, 不是回文就返回False
return str.SubString( 0, oneLen ) == str.SubString(twoLen ).Reverse();
呵呵,少加了Reverse();
第一步,删除所有的标点符号
第二步,求出剩下的字符串还有多个字符
接下来这样:
(str 没有标点了)
int oneLen = str.Length / 2;
int twoLen = oneLen + str.Length % 2;
// 如果是回文就返回True, 不是回文就返回False
return str.SubString( 0, oneLen ) == str.SubString(twoLen );
原理
abccba;
int oneLen = 6 / 2 = 3;
int twoLen = oneLen + 6 % 2 = 3 + 0 = 3;
则下面的
str.SubString( 0, oneLen ) == str.SubString( twoLen ).Reverse();
就等于
"abc" == "cba".Reverse() == "abc"
如果是:
abcba;
int oneLen = 5 / 2 = 2;
int twoLen = oneLen + 5 % 2 = 2 + 1 = 3;
则下面的
str.SubString( 0, oneLen ) == str.SubString( twoLen ).Reverse();
就等于
"ab" == "ba".Reverse() == "ab"
public static void Main()
{
string tmp = Console.ReadLine();
tmp = Regex.Replace(tmp,"[\\W]","");
for (int i = 0; i < tmp.Length / 2; i++)
{
if (tmp[i] != tmp[tmp.Length - i -1])
{
Console.WriteLine("这不是回文字");
break;
}
}
Console.ReadLine();
}