我遇到了一個問題:「如何將數字反轉爲整數而不是字符串?」任何人都可以請幫我找出答案。如何將數字反轉爲整數而不是字符串?
回答
這應做到:
int n = 12345;
int left = n;
int rev = 0;
while(left>0)
{
r = left % 10;
rev = rev * 10 + r;
left = left/10; //left = Math.floor(left/10);
}
Console.WriteLine(rev);
非常感謝,但我認爲當給定的數字在0結束時這將不起作用。就像40 – 2010-01-11 13:45:27
它仍然可以用數字0 – jerjer 2010-01-12 02:04:29
using System;
public class DoWhileDemo {
public static void Main() {
int num;
int nextdigit;
num = 198;
Console.WriteLine("Number: " + num);
Console.Write("Number in reverse order: ");
do {
nextdigit = num % 10;
Console.Write(nextdigit);
num = num/10;
} while(num > 0);
Console.WriteLine();
}
}
是這樣的?
public int ReverseInt(int num)
{
int result=0;
while (num>0)
{
result = result*10 + num%10;
num /= 10;
}
return result;
}
作爲hackish的一行代碼(更新:使用本傑明的評論,以縮短):
num.ToString().Reverse().Aggregate(0, (b, x) => 10 * b + x - '0');
速度更快的一個,和一季度班輪:
public static int ReverseOneLiner(int num)
{
for (int result=0;; result = result * 10 + num % 10, num /= 10) if(num==0) return result;
return 42;
}
這不是一條線,因爲我必須包括return 42;
。 C#編譯器不會讓我編譯,因爲它認爲沒有代碼路徑返回值。
P.S.如果你寫這樣的代碼,並且同事抓住它,你應該得到他/她對你做的一切。被警告!
編輯:我想知道關於LINQ單行慢多少是,所以就用下面的基準代碼:
public static void Bench(Func<int,int> myFunc, int repeat)
{
var R = new System.Random();
var sw = System.Diagnostics.Stopwatch.StartNew();
for (int i = 0; i < repeat; i++)
{
var ignore = myFunc(R.Next());
}
sw.Stop();
Console.WriteLine("Operation took {0}ms", sw.ElapsedMilliseconds);
}
結果(10^6個隨機正INT32範圍內的數字):
While loop version:
Operation took 279ms
Linq aggregate:
Operation took 984ms
乘以-1?精確您的問題,請...
事實上,正如我在問題中提到的......我在一個網站上發現了這個問題,他們在那裏發表了多個採訪問題。所以我也對這個問題感到困惑。 – 2010-01-11 10:49:06
耶!一種閃閃發光的方式。 (不,真的。我希望這是更多的是「我會怎麼做?」的問題,不是你真正需要的生產)
public int Reverse(int number) {
return int.Parse(number.ToString().Reverse().Aggregate("", (s,c) => s+c));
}
非常好的解決方案! – Flynn 2012-12-28 16:42:54
你不能。由於計算機在任何情況下都以十六進制表示,所以您需要將數字標記爲阿拉伯語格式,這與轉換爲字符串的語義相同。
@Alex:更準確地說,計算機的位和十六進制是精確的倍數(即:每個十六進制數字的4位組)。但是,如上所示,它仍然可以做數學。 – kriss 2010-04-12 14:30:35
/// <summary>
/// Reverse a int using its sting representation.
/// </summary>
private int ReverseNumber(int value)
{
string textValue = value.ToString().TrimStart('-');
char[] valueChars = textValue.ToCharArray();
Array.Reverse(valueChars);
string reversedValue = new string(valueChars);
int reversedInt = int.Parse(reversedValue);
if (value < 0)
reversedInt *= -1;
return reversedInt;
}
檢查下面簡單和容易 -
public int reverseNumber(int Number)
{
int ReverseNumber = 0;
while(Number > 0)
{
ReverseNumber = (ReverseNumber * 10) + (Number % 10);
Number = Number/10;
}
return ReverseNumber;
}
舊線,但我沒有看到這種變化:
int rev(int n) {
string str = new String(n.ToString().Reverse().ToArray());
return int.Parse(str);
}
我看着以下解決方案。但是當n是負數時怎麼樣?
比方說,N = -123456
這是一個好辦法,我添加到它來處理負數,與假設它會威脅消極麻木了同樣的方式。
int reverse = 0;
bool isNegative = false;
if (n < 0)
isNegative = true;
n = Math.Abs(n);
while (n > 0)
{
int rem = n % 10;
reverse = (reverse * 10) + rem;
n = n/10;
}
if (isNegative)
reverse = reverse * (-1);
return reverse;
最短的解決方案:
int reverse=0;
int number = 21;
while (number > 0)
{
reverse = number % 10;
Console.Write(reverse);
number = number/10;
}
int x = 9876543;
char[] arr = x.ToString().ToCharArray();
Array.Reverse(arr);
Console.WriteLine(int.Parse(new string(arr)));
按Pritam Karmakar評論, 是這會不會當給定數量的一端有0工作。 如果您將號碼傳遞爲150,則它將返回51而不是051. 因此,我已經按照用戶輸入寫入代碼以逆序顯示號碼,請檢查此信息。
int reverseNum = 0, reminder, num;
Console.WriteLine("Enter Number to Reverse:");
int.TryParse(Console.ReadLine(), out num);
bool isZero = false;
int cnt=0;
while (num > 0)
{
reminder = num % 10;
reverseNum = (reverseNum * 10) + reminder;
num = num/10;
if (reverseNum == 0)
isZero = true;
cnt++;
}
if (isZero)
{
Console.WriteLine(reverseNum.ToString().PadLeft(cnt, '0'));
}
else
{
Console.WriteLine(reverseNum);
}
Console.ReadKey();
int sum = 0; int remainder = 0;
int n = 123;
for (int i = n; i > 0; i = i/10)
{
remainder = i % 10;
sum = (sum * 10) + remainder;
}
Console.WriteLine(sum);
Console.ReadLine();
- 1. Excel VBA如何將值視爲整數而不是字符串
- 2. 如何將指數數字字符串轉換爲整數字符串
- 3. 如何將字符串中的數字轉換爲整數
- 4. 如何將整數值轉換爲羅馬數字字符串?
- 5. 將數字從字符串轉換爲整數而不使用內置函數
- 6. 將字符串轉換爲整數而不使用atoi
- 7. 字符串轉換爲整數而不是雙倍
- 8. 如何整數轉換爲字符串
- 9. 將字符串轉換爲整數
- 10. Swift:將字符串轉換爲整數
- 11. 將字符串轉換爲整數
- 12. 將字符串轉換爲整數
- 13. 將字符串轉換爲整數
- 14. 將字符串轉換爲整數?
- 15. 將字符串轉換爲整數
- 16. 將整數轉換爲字符串
- 17. 將字符串轉換爲整數
- 18. 將整數值轉換爲字符串
- 19. 將整數轉換爲字符串-mysql
- 20. 將JavaScript字符串轉換爲整數
- 21. 將字符串值轉換爲整數
- 22. 將字符串轉換爲整數?
- 23. 將整數轉換爲字符串
- 24. 將字符串轉換爲整數
- 25. 將字符串轉換爲整數Android
- 26. 將字符串轉換爲整數
- 27. 將整數轉換爲字符串
- 28. 將字符串轉換爲整數
- 29. 將字符串轉換爲整數
- 30. 將字符串「09335887170」轉換爲整數
定義「扭轉數爲整數」 – 2010-01-11 08:50:46
你能更準確? – 2010-01-11 08:50:46
你的意思是:顛倒其十進制表示的數字? – 2010-01-11 08:50:52