NC337. IP地址转化
描述
示例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); } };