Как то так?
public int ReverseInt(int num)
{
int result=0;
while (num>0)
{
result = result*10 + num%10;
num /= 10;
}
return result;
}
Как хакерский однострочный (обновление: использовал комментарий Бенджамина, чтобы его сократить):
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