C#算法之回文數(shù)
回文數(shù)
判斷一個整數(shù)是否是回文數(shù)?;匚臄?shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)。
示例 1:
輸入: 121 輸出: true
示例 2:
輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個回文數(shù)。
示例 3:
輸入: 10 輸出: false 解釋: 從右向左讀, 為 01 。因此它不是一個回文數(shù)。
進階:
你能不將整數(shù)轉(zhuǎn)為字符串來解決這個問題嗎?
代碼模板
public class Solution {
public bool IsPalindrome(int x) {
}
}筆者的代碼
運行時間在120ms左右,筆者的思路是:如果一個數(shù)字的反序還是等于這個數(shù),那么這個數(shù)就是回文數(shù)。
以下代碼無法解決反序后可能溢出,可以利用上一題的代碼進行溢出檢查。
當然,一個int類型的數(shù),如果是回文,那么他的反序肯定不會溢出,反之其反序發(fā)生溢出則肯定不是回文數(shù)。
public class Solution
{
public bool IsPalindrome(int x)
{
if (x < 0) return false;
int xx = x;
int num = 0; //x的反序
while (xx != 0) //求反序
{
int i = xx % 10;
xx = xx / 10;
num = num * 10 + i;
}
if (x == num) //如果x的反序num==x,那么這個數(shù)字是回文數(shù)
return true;
else
return false;
}
}加try-catch,耗時增加 10~20ms
try {
while (xx != 0)
{
int i = xx % 10;
xx = xx / 10;
num = num * 10 + i;
}
}
catch
{
return false;
}官方這道題給出了示例代碼,耗時120ms左右,思路是只反序一半,反序后的原始數(shù)、反序一半的數(shù)進行比較,也就不用檢查溢出。
public class Solution {
public bool IsPalindrome(int x) {
// 特殊情況:
// 如上所述,當 x < 0 時,x 不是回文數(shù)。
// 同樣地,如果數(shù)字的最后一位是 0,為了使該數(shù)字為回文,
// 則其第一位數(shù)字也應該是 0
// 只有 0 滿足這一屬性
if(x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int revertedNumber = 0;
while(x > revertedNumber) {
revertedNumber = revertedNumber * 10 + x % 10;
x /= 10;
}
// 當數(shù)字長度為奇數(shù)時,我們可以通過 revertedNumber/10 去除處于中位的數(shù)字。
// 例如,當輸入為 12321 時,在 while 循環(huán)的末尾我們可以得到 x = 12,revertedNumber = 123,
// 由于處于中位的數(shù)字不影響回文(它總是與自己相等),所以我們可以簡單地將其去除。
return x == revertedNumber || x == revertedNumber/10;
}
}別人用字符串方式進行判斷(雖然題目說不能用string),耗時150-180ms,不太穩(wěn)定
public class Solution
{
public bool IsPalindrome(int x)
{
string str = x.ToString();
for (int i = 0; i < str.Length / 2; ++i)
{
if (str[i] != str[str.Length - 1 - i])
{
return false;
}
}
return true;
}
}到此這篇關于C#算法之回文數(shù)的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C#提取PDF表單數(shù)據(jù)的實現(xiàn)流程
PDF表單是一種常見的數(shù)據(jù)收集工具,廣泛應用于調(diào)查問卷、業(yè)務合同等場景,憑借出色的跨平臺兼容性和標準化特點,PDF表單在各行各業(yè)中得到了廣泛應用,本文將探討如何使用C# 實現(xiàn)自動化PDF表單數(shù)據(jù)提取流程,需要的朋友可以參考下2025-01-01
Unity?UGUI的CanvasScaler畫布縮放器組件介紹使用
這篇文章主要為大家介紹了Unity?UGUI的CanvasScaler畫布縮放器組件介紹使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07

