leetcode 日常练习 1108

leetcode 1108

Posted by 敬方 on August 13, 2019

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;
    }
};