題目描述:determine whether an integer is a palindrome. do this without extra space.
方法一:將整數轉換成字串,然後用前後兩個指標,來判斷是不是回文。**如下:
bool ispalindrome(int x)
//乙個特殊的情況是x==0
if(x==0)
length++;
char
str[length];
//考慮到題目要求不能使用額外的空間,不知這樣使用sprintf函式會不會占用多餘的空間
sprintf(str,"%d",x);
cout<<"s:"
<<<" "
while(i<=j)
}if(i>=j)
return
true;
}
由於方法一中使用了sprintf來將整數轉換成字串,不知這個函式是否會使用額外的空間。方法二是完全使用除法運算,空間複雜度為o(1):
bool ispalindrome2(int x)
if(length==1)
return
true;
int half_len = length/2;
int frontnum=0,rearnum=0,divisor=1;
temp=x;
for(int i=0;i10;
rearnum=rearnum*10+temp%10;
temp=temp/10;
}if(length%2==1)
divisor*=10;
frontnum=x/divisor;
if(frontnum==rearnum)
return
true;
else
return
false;
}
C語言 判斷乙個數是不是回文數
所謂回文數,就是說乙個數字從左邊讀和從右邊讀的結果是一模一樣的,例如12321。判斷給出的整數是否是回文數 若是,則輸出該整數各位數字之和 否則輸出該數不是乙個回文數。原理大致為 任何乙個數除以10的餘數就是該數最後一位 任何乙個數除以10的商就是排除掉最後一位後的數 所以 乙個數1234 就可以通...
LintCode判斷乙個數是不是回文數
判斷乙個數是不是回文數 我的想法是先將數字變成陣列,然後設定兩個指標分別從開頭和末尾一一比對.話不多說,如下 package com.yangshunfan.lintcode 判斷乙個數是不是回文數 public class huiwenshu 設定兩個指標 int left 0 int right...
200 判斷乙個數是不是快樂數
題目如下 編寫乙個演算法來判斷乙個數 n 是不是快樂數。快樂數 定義為 對於乙個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為 1,也可能是 無限迴圈 但始終變不到 1。如果 可以變為 1,那麼這個數就是快樂數。如果 n 是快樂數就返回 true 不是,則返回 ...