程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Restore IP Addresses

Restore IP Addresses

編輯:C++入門知識

Restore IP Addresses


 

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:
Given 25525511135,

return [255.255.11.135, 255.255.111.35]. (Order does not matter)

解:

主要思想:采用遞歸的方式,一個一個的加入到最後的ip中

 

void formIpAddr(vector&ret, string curIp, string nums, int idxIp){
        if(idxIp==1){
            if(nums.size()>3 || (nums.size()>1&&nums[0]=='0')){
                return ;
            }
            const char * data=nums.c_str();
            if(nums.size()<=2||atoi(data)<=255){
                ret.push_back(curIp+nums);
                return;
            }
        }
        else{
            if(nums[0]=='0'){
                string tmp=curIp+nums.substr(0,1)+.;
                formIpAddr(ret, tmp, nums.substr(1), idxIp-1);
                return;
            }
            else{
                int i;
                string tmp;
                for(i=0; i<2 && i+idxIp<=nums.size(); i++){
                    tmp=nums.substr(0, i+1);
                    formIpAddr(ret, curIp+tmp+., nums.substr(i+1), idxIp-1);
                }
                if(i+idxIp<=nums.size()){
                    const char * data=nums.substr(0,i+1).c_str();
                    tmp=nums.substr(0, i+1);
                    if(atoi(data)<=255)
                        formIpAddr(ret, curIp+tmp+., nums.substr(i+1), idxIp-1);
                }
            }
        }
        
    }

    vector restoreIpAddresses(string s) {
        vector ret;
        if(s.size()<4)
            return ret;
        string curIp=;
        
        formIpAddr(ret, curIp, s, 4);
        return ret;
    }


 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved