加载中...

复原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;
}
posted @ 2022-09-23 10:44  biubidio  阅读(41)  评论(0)    收藏  举报