您的位置:首页 > 编程语言 > C#

leetcode 7: Reverse integer (C#版)

2016-04-12 10:19 525 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode .net c#