Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
这题最初的思路是采用list的reverse功能,但是用了以后发现比较reverse前后的列表并不简便,本以为.equals功能可以比较数组、列表什么的是否完全一样,结果整半天并不能。于是最后只写出了一个暴力求解。。。
public class Solution {
public long Reverse(long x) {
long x2;
string str;
char[] charnum;
if (x < 0)
{
long x1 = -x;
charnum = Convert.ToString(x1).ToCharArray();
char rep;
//暴力解决。。。
for (int i = 0; i < charnum.Length; i++)
{
for (int j = charnum.Length - i - 1; j > 0; j--)
{
if (j <= i)
break;
rep = charnum[i];
charnum[i] = charnum[j];
charnum[j] = rep;
break;
}
}
str = new string(charnum, 0, charnum.Length);
x2 = Convert.ToInt64(str);
long x3=-x2;
return x3;
}
else
{
charnum = Convert.ToString(x).ToCharArray();
char rep;
for (int i = 0; i < charnum.Length; i++)
{
for (int j = charnum.Length - i - 1; j > 0; j--)
{
if (j <= i)
break;
rep = charnum[i];
charnum[i] = charnum[j];
charnum[j] = rep;
break;
}
}
str = new string(charnum, 0, charnum.Length);
x2 = Convert.ToInt64(str);
return x2;
}
}
}
到网上看了下大神的做法,发现自己的思路还是太Naive了。。。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int x = 15349;
int ans = 0;
int tmp = Math.Abs(x);
while(tmp > 0)
{
int b = tmp % 10;
ans = ans*10 + b;
tmp /= 10;
}
int res= x > 0 ? ans:-ans;
Console.WriteLine(res);
}
}
}
引自LeetCode-Reverse Integer[模拟] | Acm之家 http://www.acmerblog.com/leetcode-solution-reverse-integer-6359.html