演算法 不利用額外空間判斷回文數

2021-06-19 20:11:06 字數 693 閱讀 7342

題目:

determine whether an integer is a palindrome. do this without extra space.

1.輸入檢測:如果輸入的integer是負數,返回false

2.「額外空間」的大坑:用string來存放integer,使用了額外空間

3.「溢位」的大坑:如果把回文數整個倒過來,再比較是否相同,這種方法可能是可行的。但會出現有些整數倒置後溢位,再處理溢位就與具體環境有關了,不具有普遍性

將乙個數倒置的演算法:

// reverse an integer

int reverse(int num)

return rev;

}

4.好的思路一:

不使用遞迴來從兩端對比數字是否一樣:

演算法:

bool ispalin(int num)

while(num!=0)

return true;

}

5.如果棧空間不算額外空間的話,可以利用遞迴的方法

演算法:(比較難讀懂= =)

bool ispalindrome(int x, int &y)  else 

}bool ispalindrome(int x)

演算法 判斷回文數

回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。輸入 121 輸出 true 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。輸入 10 輸出 false 解釋 從右向左讀,為 01 因此它不是乙個回文數。public cla...

判斷回文數演算法

回文數是指正序 從左到右 讀和倒序 從右到左 讀都是一樣的整數。比如形如 121,1221,13531 的數字都是回文數,但 121,10,25 等等都不是回文數。如何判斷乙個數是回文數?這是乙個很簡單的演算法,最常見的實現方式是使用乙個棧或其他方法,把數字序列逆序,然後判斷逆序後的數字是否等於原先...

回文數判斷 演算法

判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 從右向左...