題目要求:給定正整數 n,求其 下乙個最小的回文正整數。比如,n=9,則下乙個所求之數為11。又如n=12444,則下乙個所求之數為12521.
下面給出了兩種實現方法 getfirstbiggerpalindromev2是本博主寫的,而getfirstbiggerpalindrome()是網友寫的。
#include < cstdlib >
#include < cstdio >
#include < cstring >
#include < iostream >
#include < string >
#include < algorithm >
#include < sstream >
using namespace std;
int getfirstbiggerpalindrome(int givenumber) ;
bool odd=true;
int numberdigit=0,middle=0;
sprintf(strnumber,"%d",givenumber);
numberdigit=strlen(strnumber);
cout<<"number="<=3
else
//==9
else
leftreversestr[index]='\0';
strcpy(finalstr,leftstr);
finalstr[middle-1]=middlenum;
ptr=finalstr + middle;
strcpy(ptr,leftreversestr);
resultnumber=atoi(finalstr);}}
else }}
//even
if(!odd)
leftreversestr[index]='\0';
strcpy(finalstr,leftstr);
ptr=finalstr + middle;
strcpy(ptr,leftreversestr);
resultnumber=atoi(finalstr);
}//leftreverse > right, make directly
else
}cout<<"final number="getfirstbiggerpalindromev2(12456);
getfirstbiggerpalindrome(12320);
getfirstbiggerpalindromev2(12320);
getfirstbiggerpalindrome(12923);
getfirstbiggerpalindromev2(12923);
getfirstbiggerpalindrome(1234);
getfirstbiggerpalindromev2(1234);
getfirstbiggerpalindrome(8);
getfirstbiggerpalindromev2(8);
return 0;
}
面試題之10億正整數問題
全屏閱讀 收藏 10億個正整數,只有其中1個數重複出現過,要在o n 的時間裡面找出這個數,記憶體要盡可能少 小於100m 謝謝absolute同學提出的問題。部分解答 還有沒有完成的部分 首先看一下10億個正整數,正整數可以表示的範圍為1到2的31次方 1。10億也就是1 10 9,2 31次方 ...
面試題之10億正整數問題
10億個正整數,只有其中1個數重複出現過,要在o n 的時間裡面找出這個數,記憶體要盡可能少 小於100m 謝謝absolute同學提出的問題。部分解答 還有沒有完成的部分 首先看一下10億個正整數,正整數可以表示的範圍為1到2的31次方 1。10億也就是1 10 9,2 31次方 2 1024 1...
面試題目任意位數整數減法
任意位數整數減法,雙向鍊錶實現,無法處理負數,如果減數小於被減數,則顯示結果的絕對值 include includetypedef unsigned char byte typedef struct dgt 每一位數字乙個節點 digit,p digit p digit createdigit in...