复原ip地址
力扣93 IP地址
#include<bits/stdc++.h>
using namespace std;
string resultIP[4];
bool flag=false;
void print(){
for(int i=0;i<3;i++){
cout<<resultIP[i]<<".";
}
cout<<resultIP[3]<<endl;
}
void ifIp(string ip,int n,int pos){
//记录当前ip每个字符段的长度
for(int length=1;length<=3;length++){
resultIP[n]="";
resultIP[n]=resultIP[n].append(ip,pos,length)+"\0";//存储字符字段
if(resultIP[n][0]=='0'&&length!=1)continue;
if(n==3&&ip.length()-pos>3)continue;
if(atof(resultIP[n].c_str())>255.0||atof(resultIP[n].c_str())<0.0)continue;
if(n==3){
if(ip.length()==pos+length)
print();
flag=true;
continue;}
ifIp(ip,n+1,pos+length);
continue;
}
}
int main(){
int n;//测试用例的数量
cin>>n;
getchar();
string ip[100];
for(int i=0;i<n;i++){
getline(cin,ip[i]);
}
for(int i=0;i<n;i++){
flag=false;
ifIp(ip[i],0,0);
if(!flag)cout<<"-1"<<endl;
}
return 0;
}

浙公网安备 33010602011771号