题目:http://10.105.242.80/problem/p/101/
积累知识:
sscanf(s.c_str(),"%d",&count); //string转int
void split(string s,char c,vector<string> &vs){ //自己实现的字符串分割函数
int start=0;
for(int i=0;i<s.length();i++){
if(s[i]==c){
vs.push_back(s.substr(start,i-start));
start=i+1;
}
}
if(start<s.length()){
vs.push_back(s.substr(start,s.length()-start));
}
}
解题代码:
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
void split(string s,char c,vector<string> &vs){
int start=0;
for(int i=0;i<s.length();i++){
if(s[i]==c){
vs.push_back(s.substr(start,i-start));
start=i+1;
}
}
if(start<s.length()){
vs.push_back(s.substr(start,s.length()-start));
}
}
bool judgeString(vector<string> vs){
if(vs.size()!=4) return false;
for(int i=0;i<vs.size();i++){
string s=vs[i];
if(s.length()==0)return false;
for(int i=0;i<s.length();i++){
if(s[i]<'0' || s[i]>'9'){
return false;
}
}
}
return true;
}
bool judgeInt(vector<string> vs){
for(int i=0;i<vs.size();i++){
int count;
string s=vs[i];
sscanf(s.c_str(),"%d",&count);
if(count<0 || count>255){
return false;
}
}
return true;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
char buf[50];
scanf("%s",buf);
string s(buf);
vector<string> vs;
split(s,'.',vs);
if(judgeString(vs) && judgeInt(vs)){
printf("Yes\n");
}else{
printf("No\n");
}
}
return 0;
}