classSolution{public:intreverse(int x){
string s =to_string(x);
std::reverse(s.begin(), s.end());int res =0;try{if(x <0)
res =-stoi(s);else
res =stoi(s);}catch(exception e){return0;}return res;}};
#9.迴文數
classSolution{public:boolisPalindrome(int x){if(x <0)returnfalse;
string s =to_string(x);
size_t len = s.size();
size_t i =0, j = len -1;while(i < j){if(s[i++]!= s[j--])returnfalse;}returntrue;}};
#13.羅馬數字轉整數
classSolution{private:
unordered_map<int,int> ROMAN;public:Solution(){
ROMAN['I']=1;
ROMAN['V']=5;
ROMAN['X']=10;
ROMAN['L']=50;
ROMAN['C']=100;
ROMAN['D']=500;
ROMAN['M']=1000;}intromanToInt(string s){int num =0;for(int i =0; i < s.size();++i){switch(s[i]){case'I':if(i +1< s.size()){if(s[i +1]=='V'){
num +=4;
i++;}elseif(s[i +1]=='X'){
num +=9;
i++;}else{
num +=1;}}else{
num +=1;}break;case'X':if(i +1< s.size()){if(s[i +1]=='L'){
num +=40;
i++;}elseif(s[i +1]=='C'){
num +=90;
i++;}else{
num +=10;}}else{
num +=10;}break;case'C':if(i +1< s.size()){if(s[i +1]=='D'){
num +=400;
i++;}elseif(s[i +1]=='M'){
num +=900;
i++;}else{
num +=100;}}else{
num +=100;}break;default:
num += ROMAN[s[i]];break;}}return num;}};
#14.最長公共前綴
classSolution{public:
string longestCommonPrefix(vector<string>&strs){if(strs.size()==0)return"";if(strs.size()==1)return strs[0];
string prefix ="";for(int i =0; i < strs[0].size();++i){int c = strs[0][i];bool yes =true;for(int j =1; j < strs.size();++j)if(strs[j][i]!= c){
yes =false;break;}if(yes)
prefix += c;elsebreak;}return prefix;}};
classSolution{public:intlengthOfLastWord(string s){if(s.size()==0)return0;int r;for(r =(int)(s.size()-1); r >=0;--r)if(s[r]!=' ')break;int l;for(l = r -1; l >=0;--l)if(s[l]==' '){
l +=1;break;}if(l <0)
l =0;return r - l +1;}};
#66.加一
classSolution{public:
vector<int>plusOne(vector<int>&digits){int carry =1;for(int i =(int)(digits.size()-1); i >=0;--i){
digits[i]+= carry;if(digits[i]>=10){
digits[i]%=10;
carry =1;}else
carry =0;}if(carry)
digits.insert(digits.begin(),1);return digits;}};
#67.二進制求和
classSolution{public:
string addBinary(string a, string b){if(a.size()< b.size()){
string tmp = a;
a = b;
b = tmp;}int carry =0;int j =(int)(b.size()-1);for(int i =(int)(a.size()-1); i >=0;--i){int digit;if(j <0)
digit =c2i(a[i])+ carry;else
digit =c2i(a[i])+c2i(b[j--])+ carry;if(digit >=2){
digit %=2;
carry =1;}else{
carry =0;}
a[i]=i2c(digit);}if(carry)
a.insert(a.begin(),'1');return a;}intc2i(char c){return c -'0';}chari2c(int x){return(char)(x +'0');}};
#69.x 的平方根
classSolution{public:intmySqrt(int x){if(x <=1)return x;int low =0, high = x;while(low <= high){int mid =(low + high)/2;if(mid <= x / mid &&(mid +1)> x /(mid +1)){return mid;}elseif(mid > x / mid){
high = mid -1;}else{
low = mid +1;}}return0;}};