2013-12-10 102 views
3

我試圖扭轉一個整數的位數:123456 => 654321,而我能想出的最好的解決辦法是123456.to_s.reverse.to_i。我覺得這是太多的代碼。任何人都有比這更好的方法?反向整數位

+12

我不認爲你可以改善這一點。這是一個不尋常的轉變需要。一旦你選擇了一個字符串形式的整數,它也是有意義的。注意你失去了'0'的結尾(因爲它們變成反向形式的前導零,並且整數是它們如何顯示的屬性,而不是數據固有的)。 –

+7

你發現18個字母太多代碼對於這個不那麼瑣碎的任務? :) –

+3

不是更短的一個,但更快: 'def reverse(n) r = 0;當n!= 0時,n =(r * 10 + n%10),n/10; r end' – eugen

回答

2

這裏是沒有將字符串轉換另一種方式....

x = 12345 
y = 0 

while x > 0 do 
    y = y*10 
    y = y + (x%10) 
    x = x/10 

    puts y  
end 

該算法可以在許多采訪要求以及....無論你使用哪種語言....這個邏輯會相同。 上面的例子使用Ruby

2

這是一個很「代碼高爾夫」 -ish答案,不是我會建議在實際的代碼編寫...

但是你可以刮鬍子一個多餘的字符掉的答案與:

123456.to_s.reverse.to_i 
123456.digits.join.to_i