题解 | #数字字符串转化成IP地址#

数字字符串转化成IP地址

http://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e

我选择的是在字符串里插入三个点,分割成四块进行暴力搜索,但是要特别注意两点:

  1. 分割的每一块必须在0~255之间。
  2. 分割的每一块不能有前导0。
class Solution {
  public:
    /**
     *
     * @param s string字符串
     * @return string字符串vector
     */
    vector<string> restoreIpAddresses(string s) {
        // write code here
        vector<string>ans;
        for (int i = 1; i <= (s.length() >= 3 ? s.length() - 3 : 0); i++) {
            for (int j = i + 1; j <= (s.length() >= 2 ? s.length() - 2 : 0); j++) {
                for (int k = j + 1; k <= (s.length() >= 1 ? s.length() - 1 : 0); k++) {
                    string a = s.substr(0, i);
                    string b = s.substr(i, j - i);
                    string c = s.substr(j, k - j);
                    string d = s.substr(k, s.size()  - k);
                    int A = atoi(a.c_str());
                    int B = atoi(b.c_str());
                    int C = atoi(c.c_str());
                    int D = atoi(d.c_str());
                    if ((a.length() > 1 && a[0] == '0') || (b.length() > 1 && b[0] == '0') ||
                            (c.length() > 1 && c[0] == '0') || (d.length() > 1 &&
                                    d[0] == '0'))
                        continue;
                    if (A >= 0 && A <= 255 && B >= 0 && B <= 255 && C >= 0 && C <= 255 && D >= 0 &&
                            D <= 255)
                        ans.push_back(to_string(A) + "." + to_string(B) + "." + to_string(
                                     C) + "." + to_string(D));
                }
            }
        }
        return ans;
    }
};
全部评论

相关推荐

机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
07-11 11:15
中南大学 Java
好可爱的hr姐姐哈哈哈哈
黑皮白袜臭脚体育生:兄弟们貂蝉在一起,吕布开了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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