leetcode 1108 IP 地址无效化
题目描述:
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。
所谓无效化 IP 地址,其实就是用 [.]
代替了每个 .
。
示例 1:
输入:address = “1.1.1.1” 输出:”1[.]1[.]1[.]1”
示例 2:
输入:address = “255.100.50.0” 输出:”255[.]100[.]50[.]0”
提示:
- 给出的 address 是一个有效的 IPv4 地址
主要思路:
这里有两种思路:
- 直接使用string 的replace和find函数,进行最简单的操作。
- 使用简单使用string迭代器,便利进行判断时,,当存在”.”时,将字符串替换掉。
#include <iostream>
#include <vector>
#include <string>
#include <stdio.h>
class Solution {
public:
string defangIPaddr(string& address) {
std::string result="";
for(int i=0;i<address.length();++i){
if(address[i]=='.'){
result+="[.]";
}else{
result+=address[i];
}
}
return result;
}
//这个要在c++11中成立,可能存在内存溢出
string defangIPaddr2(string& address){
int len=address.size();
char result[len+12];
for(int i=0,j=0;i<len;++i)
{
if(address[i]=='.'){
result[j]='[';
result[j+1]='.';
result[j+2]=']';
j+=3;
}else{
result[j]=address[i];
++j;
}
}
return string(result);
}
};
int main(int argc, char const *argv[]) {
Solution my_solution;
//input string
std::string input_string1="1.1.1.1";//目标输出"1[.]1[.]1[.]1"
std::string input_string2="255.100.50.0";//目标输出"255[.]100[.]50[.]0"
//output string
std::string output1="";
//my result number
auto my_result1=my_solution.defangIPaddr(input_string1);
auto my_result2=my_solution.defangIPaddr(input_string2);
//print_vector(my_result);
std::cout<<"result1: "<<my_result1<<"\n"<<"resutl2:"<<my_result2<<std::endl;
//print_vector(my_result);
return 0;
}
/*
优质解答:
//思路基本相同,find函数执行然后进行迭代
class Solution {
public:
string defangIPaddr(string address) {
// 2019-8-22 11\:20\:00 by czy
string addr = address;
int pos = 0;
while (1)
{
pos = addr.find('.', pos);
//cout << "pos: " << pos << endl;
if (pos == -1)
break;
addr = addr.insert(pos, "[");
addr = addr.insert(pos + 2, "]");
pos += 2;
//cout << "addr: " << addr << endl;
//system("pause");
}
return addr;
}
};