列表

详情


NC337. IP地址转化

描述

IP地址是一个用 '.' 隔开的四段数字,每段的大小是 。请你把 IP 地址转换成一个整数。(IPv4)
例如, 114.55.207.244 的二进制表示是 01110010 00110111 11001111 11110100 ,其十进制表示是 7590617063

示例1

输入:

"114.55.207.244"

输出:

"1916260340"

示例2

输入:

"0.0.0.1"

输出:

"1"

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 3ms, 内存消耗: 392KB, 提交时间: 2022-08-02

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param ip string字符串 
     * @return string字符串
     */
    unsigned int stoi(string s){
        unsigned int res=0;
        for( int i=0; i<s.length();i++ ){
            res = res * 10;
            res += (s[i]-'0');
        }
        cout << res <<endl;
        return res;
    }
    string itos( unsigned int a ){
        string res;
        while(a){
            char now = (a % 10) + '0';
            res = now + res;
            a /= 10;
        }
        return res;
    }
    string IPtoNum(string ip) {
        unsigned int res = 0;
        for( int i=0; i<ip.length(); i++ ){
            if(ip[i] =='.'){
                res = res << 8;
                res = res | stoi( ip.substr(0,i));
                ip = ip.substr(i+1);
                i=0;
            }
                
        }
        res = res << 8;
        res = res | stoi( ip);
        cout <<res;
        return itos(res);
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 400KB, 提交时间: 2022-06-09

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param ip string字符串 
     * @return string字符串
     */
    string IPtoNum(string ip) {
        // write code here
        int len = ip.size();
        long long res = 0;
        string tmp;
        for(int i = 0; i < len; ++i){
            if(ip[i] != '.') tmp += ip[i];
            if(ip[i] == '.' || i == len - 1){
                res = res * 256 + stoi(tmp);
                tmp = "";
            }
        }
        return to_string(res);
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 408KB, 提交时间: 2022-03-24

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param ip string字符串 
     * @return string字符串
     */
    string IPtoNum(string ip) {
        // write code here
        stringstream ss(ip);
        long sum = 0;
        string temp;
        while(getline(ss,temp,'.')){
            int a = stoi(temp);
            sum = sum*pow(2,8)+a;   ////这个怎么就没想到你,10进制*10,这个一个8个二进制
        }
        return to_string(sum);
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 436KB, 提交时间: 2022-03-15

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param ip string字符串 
     * @return string字符串
     */
    string IPtoNum(string ip) {
        // write code here
        int p1 = ip.find('.');
		int p2 = ip.find('.', p1 + 1);
		int p3 = ip.find('.', p2 + 1);
		string a(ip.begin(), ip.begin() + p1);
		string b(ip.begin() + p1 + 1, ip.begin() + p2);
		string c(ip.begin() + p2 + 1, ip.begin() + p3);
		string d(ip.begin() + p3 + 1, ip.end());
		int A = stoi(a);
		int B = stoi(b);
		int C = stoi(c);
		int D = stoi(d);
		long R = A * pow(2, 24) + B * pow(2, 16) + C * pow(2, 8) + D;
		string r = to_string(R);
		return r;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 448KB, 提交时间: 2022-08-06

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param ip string字符串 
     * @return string字符串
     */
    unsigned int stoi(string s)
    {
        unsigned int res=0;
        for(int i=0;i<s.length();i++)
        {
            res=res*10;
            res+=(s[i]-'0');
        }
        cout<<res<<endl;
        return res;
    }
    string itos(unsigned int a)
    {
        string res;
        while(a)
        {
            char now=(a%10)+'0';
            res=now+res;
            a/=10;
        }
        return res;
    }
    string IPtoNum(string ip) {
        unsigned int res=0;
        for(int i=0;i<ip.length();i++)
        {
            if(ip[i]=='.')
            {
                res=res<<8;
                res=res|stoi(ip.substr(0,i));
                ip=ip.substr(i+1);
                i=0;
            }
        }
        res=res<<8;
        res=res|stoi(ip);
        cout<<res;
        return itos(res);
    }
};

上一题