最小的回文数
Description:给出一个数X,求比X大的最小的回文数!(x<10^20)
Sample Input:
1
10
12
Sample Output:
2
11
22
给个好思路....O(∩_∩)O谢谢 --------------------编程问答-------------------- 自己去看看,这种题目都是以前在学校的时候做的,最好自己去实现。 --------------------编程问答-------------------- 谢谢O(∩_∩)O谢谢 --------------------编程问答-------------------- 1.用while循环,碰到回文数就停止;
2.写一个判断一个数是否是回文数的方法。
综上,问题的关键是写一个方法判断一个数是否是回文数。
(不考虑效率问题的话,应该是很简单的) --------------------编程问答-------------------- 正好没事做,写了个判断回文数的方法,我是通过转换成string来完成的。
挺简单的一个方法,如果哪位朋友有更好的方法,希望能介绍一下:
--------------------编程问答-------------------- 把一个数从中间分开
static bool IsPalindrome(int no)
{
bool flg = false;
if (no > 0)
{
string noStr = no.ToString();
int palindromeOfno = 0;
for (int i = 0; i <noStr.Length; i++)
{
palindromeOfno+= (Convert.ToInt32(noStr[i].ToString()) *
Convert.ToInt32(Math.Pow(10, i)));
}
if (no == palindromeOfno)
{
flg = true;
}
}
else
{
flg = false;
}
return flg;
}
比如105456 分成105 456
比如105678 分成105 678
比较中线左右第一个数谁大,如果右边的数大,左边的数加1
105 456 中 5比4大 所以左边105不变
105 678 中 6比5大 所有左边105 + 1得到 106
105对应回文数 105501
106对应会文数 106601
这个是位数为偶数的情况,位数为基数的情况差不多。
12345 拆分成 123 45 由于中线左右3 比4小
左边+1得到124
所以回文数12421 --------------------编程问答--------------------
public static void GetHWS(int num)--------------------编程问答-------------------- 有点问题。奇数比较大小有问题。也没考虑比较相等的情况。不过思路大致是这样 --------------------编程问答-------------------- --------------------编程问答--------------------
{
string strNum = Convert.ToString(num);
int length = strNum.Length;
bool isOdd = (length % 2 == 1);
string strLeftHalf;
if (length == 1)
{
strLeftHalf = strNum;
}
else
{
strLeftHalf = strNum.Substring(0, length + 1 >> 1);
char cLeft = strNum[(strNum.Length + 1 >> 1) - 1];
char cRight = strNum[strNum.Length + 1 >> 1];
if (cRight > cLeft)
{
int iLeftHalf = Convert.ToInt32(strLeftHalf);
strLeftHalf = Convert.ToString(iLeftHalf + 1);
}
}
string strRightHalf = new string(strLeftHalf.ToCharArray().Reverse().ToArray());
if (isOdd)
{
strRightHalf = strRightHalf.Substring(1);
}
Console.WriteLine(strLeftHalf + strRightHalf);
}
竟然引用我空间的,惭愧啊
补充:.NET技术 , C#