C 判斷乙個數是不是回文數,不使用額外的空間

2021-08-09 22:56:15 字數 981 閱讀 8059

題目描述: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 不是,則返回 ...