经典题

2018-02-28  本文已影响0人  yz_wang

1. 相反数
为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325的"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的数,我们得到5231+1325=6556.如果颠倒之后的数字有前缀零,前缀零将会被忽略。例如n = 100, 颠倒之后是1.

using namespace std;  
   
int n;  
int main() {  
    cin >> n;  
    int cn = 0;  
    int x = n;  
    while(x) {  
        cn = cn * 10 + x % 10;  
        x /= 10;  
    }  
    cout << n + cn << endl;  
    return 0;  
}  

2. Inplace 字符串修改
http://blog.csdn.net/hk52222/article/details/49585197

字符串翻转

void Reverse(char *pBegin, char *pEnd){
    if(pBegin==NULL || pEnd==NULL)
        return;
    while (pBegin<pEnd) {
        char temp=*pBegin;
        *pBegin=*pEnd;
        *pEnd=temp;
        
        pBegin++;
        pEnd--;
    }
}

3. 反向输出链表
https://www.cnblogs.com/codingmengmeng/p/5857055.html

4. 十进制转二进制

//十进制转换为二进制  
#include <iostream>  
#include <fstream>  
#include <string>  
#include <algorithm>  
using namespace std;  
string s;  
int main(int argc,char * argv[])  
{  
    int n;  
    while(cin>>n)  
    {  
        s="";  
        for(int a = n; a ;a = a/2)  
        {  
        //二进制只有两个基数,所以转换起来比较方便,若是转换为其他进制可以使用switch结构  
                s=s+(a%2?'1':'0');  
        }  
        //字符串反转  
        //s.begin() 获得字符串的开始位置  
        //s.end() 获得字符串的结尾位置  
        std::reverse(s.begin(),s.end());  
  
  
        cout<<s<<endl;  
         //c_str() 将string类型的字符创转化为char*  
        //const char *sss=s.c_str();  
        //cout.width(11);  
        //cout<<n<<(n<0?"-->-":"-->")<<sss<<"\n";  
  
  
    }  
    return 0;  
}  

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。【位运算】

class Solution {
public:
    int  NumberOf1(int n) {
        int charNum = sizeof(n);
        int flag = n;
        int num = 0;

        for (int i = 0; i < charNum * 8; i++)  
            if (flag & 1)
                num++;
            flag = flag >> 1;
        }
        return num;
    }
};

5. 丑数表,素数表
http://blog.csdn.net/u011116672/article/details/50264901

上一篇 下一篇

猜你喜欢

热点阅读