题解 | #合法IP#

合法IP

https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9

#include <cctype>
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

bool check_(string s){
    for (auto ch : s){
        if (!isdigit(ch))
            return false;
    }
    int num_index = 0;
    if (s.size() > 1){
        for (auto ch : s){
            if (ch == '0' && num_index == 0)
                return false;
            if (ch != '0')
                num_index = 1;
        }
    }
    int x = stoi(s);
    if (x < 0 || x > 255)
        return false;
    return true;
}
int main() {
    string str;
    while (cin>>str){
        vector<string> vec;
        string tmp;
        for (int i = 0; i < str.size(); i++){
            if (i == str.size() - 1 ){
                tmp += str[i];
                vec.push_back(tmp);
            }
            if (str[i] == '.' && !tmp.empty()){
                vec.push_back(tmp);
                tmp = "";
            }
            else {
                tmp += str[i];
            }
        }
        int index = 0;
        if (vec.size() != 4){
            index = 1;
        }         
        for (auto it : vec){
            if (!check_(it)){
                index = 1;
            }
        }
        if (index)
            cout<<"NO";
        else
            cout<<"YES";
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

01-02 20:08
马鞍山学院 Java
27届学院本誓死冲击...:实习经历最好写上做了什么项目,负责什么业务,否则有点假
点赞 评论 收藏
分享
2025-12-28 20:47
已编辑
北京工商大学 Java
程序员牛肉:我靠你这个实习经历其实最需要担心的点是你做的太多了,可能会被面试官怀疑是你伪造的。 交易状态机是你做的,支付多渠道是你做的,对账是你做的,结算还是你做的,重复支付也是你做的,整个服务的异常处理也是你做的。 其实你这个反而问题很大的,你想想站在面试官的角度,他是真的会相信你的能力很强,还是相信这份实习你伪造了大部分?我相信你真的做了这么多,但是删一些,废话删一删。你这个做的太多了反而真实性不可信。 后面再补一个项目,在github上找一个高star的项目学一学然后写到自己简历上。我觉得你能力肯定没问题。28届能做到这个份上很厉害,但是在求职市场中,你不是在跟28届的同学比,把你这个简历放到27届其实也就一般水平。 所以后续要想一想看看能不能给自己简历上搞点亮点,比如开源贡献呢?比如博客呢?
实习要如何选择和准备?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务