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

数字字符串转化成IP地址

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

class Solution {
    vector<string> ans;
public:
    /**
     * 
     * @param s string字符串 
     * @return string字符串vector
     */
    vector<string> restoreIpAddresses(string s) {
        // write code here
        dfs(s, 0, 0, "");
        return ans;
    }
	// u是搜索的字符串的位置,k是已经划分的数字个数
    void dfs(string& s, int u, int k, string path) {
        if (u == s.size()) {
            if (k == 4) { // 当正好搜索完字符串并且数字个数为4时
                path.pop_back(); // 把末尾的‘.’去掉
                ans.push_back(path);
            }
        }
        if (k == 4) return; // 剪枝
        for (int i = u, t = 0; i < s.size(); i++) {
		  	// 如果搜索的第一位是0,则只允许当作0看待,其他情况当作前导0直接break
            if (i > u && s[u] == '0') {
                break;
            }
            t = t * 10 + s[i] - '0';
            if (t <= 255)
                dfs(s, i + 1, k + 1, path + s.substr(u, i - u + 1) + '.');
        }
    }
};
  • 思路:暴搜
  • 1、暴搜划分数字的方法
  • 2、当当正好搜索完字符串并且数字个数为4时,加入结果中
  • 3、注意前导0问题
  • 4、只有当数字在0~255范围内才有效
  • 时间复杂度:O(C(3, n - 1))
  • 空间复杂度:O(不好说)
全部评论

相关推荐

06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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