给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

示例:

输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]
 //暴力搜索
//一共分为4组
//每组数据不超过三位
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string>res;
for(int a = ; a<;++a)
for(int b=;b<;++b)
for(int c =;c<;++c)
for(int d=;d<;++d)
if (a + b + c + d == s.size()) {
int A = stoi(s.substr(, a));//取子串并转为数组
int B = stoi(s.substr(a, b));
int C = stoi(s.substr(a+b, c));
int D = stoi(s.substr(a+b+c, d));
if (A <= && B <= && C <= && D <= ) {
string str = to_string(A) + "." + to_string(B) + "." + to_string(C) + "." + to_string(D);
if (str.size() == (s.size() + ))//去除010这种组合
res.push_back(str);
}
}
return res; }
}; //使用递归
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string>res;
helper(s, , "",res);
return res;
}
void helper(string s, int n, string out, vector<string>&res) {
if (n == ) {
if (s.empty())res.push_back(out);//全部组合4组IP完毕
}
else {
for (int k = ; k < ; ++k) {
if (s.size() < k)break;
int val = stoi(s.substr(, k));//取子串转化为数字
if (val > || k != to_string(val).size())//当数字大于255或出现010,不满足
continue;
helper(s.substr(k), n + , out + s.substr(, k) + (n == ? "" : "."), res);
}
}
}
};

力扣算法题—093复原IP地址的更多相关文章

  1. 第93题:复原IP地址

    一. 问题描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135 ...

  2. leetcode刷题-93复原IP地址

    题目 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔. 示例: 输入: &q ...

  3. 力扣算法题—069x的平方根

    实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...

  4. 力扣算法题—060第K个排列

    给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132&qu ...

  5. 力扣算法题—050计算pow(x, n)

    #include "000库函数.h" //使用折半算法 牛逼算法 class Solution { public: double myPow(double x, int n) { ...

  6. 力扣算法题—147Insertion_Sort_List

    Sort a linked list using insertion sort. A graphical example of insertion sort. The partial sorted l ...

  7. 力扣算法题—460LFU缓存

    [题目描述] 设计并实现最不经常使用(LFU)缓存的数据结构.它应该支持以下操作:get 和 put. get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1. put(k ...

  8. 力扣算法题—079单词搜索【DFS】

    给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字母不允许被重复使用. ...

  9. 力扣算法题—052N皇后问题2

    跟前面的N皇后问题没区别,还更简单 #include "000库函数.h" //使用回溯法 class Solution { public: int totalNQueens(in ...

随机推荐

  1. PHP Socket编程(转)

    [PHPsocket编程专题(理论篇)]初步理解TCP/IP.Http.Socket.md [PHPsocket编程专题(实战篇①)]php-socket通信演示 [PHPsocket编程专题(实战篇 ...

  2. Linux记录~持续更新~

    ls -ildha /etc -i 显示对应id号 唯一标识 -l 显示详情 -d 显示当前文件夹 不包括子目录 -h 单位为KB 而不是B -a 显示所有 包括隐藏文件 mkdir mkdir -p ...

  3. 关于加载font-awesome文字显示不出来

    关于font-awesome的网站 中文网:http://www.fontawesome.com.cn/get-started/ 官网:https://fontawesome.com/ 中文网4.7: ...

  4. JNA 备注

    最近写JNA调用DLL的代码比较多.应该这样说,C的精华在于对指针的灵活运用,而用JNA调用C/C++最痛苦的也在于此.你不知道该用什么样的方式去对应C/C++的方法,特别是遇到指针.结构体指针.指针 ...

  5. IDEA mybatis mapper类跳转到xml文件

    安装插件 free mybatis plugin,安装完成后重启,ctrl+单击即可跳转.

  6. JavaFX技术简要总结

    最近,做一个桌面应用程序的项目,需要考察相关技术,对于经常使用Java的我们来说,很自然的找Java的桌面程序开发技术,发现JavaFX是比较合适的,简单熟悉了一下,写出来给大家做个参考. 一 Jav ...

  7. python接口自动化(七)--状态码详解对照表(详解)

    简介 我们为啥要了解状态码,从它的作用,就不言而喻了.如果不了解,我们就会像个无头苍蝇,横冲直撞.遇到问题也不知道从何处入手,就是想找别人帮忙,也不知道是找前端还是后端的工程师. 状态码的作用是:we ...

  8. Fiddler原理~知多少?

    首先我们学习Fidder这个工具,我们就应该去了解它的基本东西,比如这个单词的意思.Fiddler叫:小提琴.骗子的意思. 那么它是干什么的呢? Fiddler是一个http协议调试代理工具,它能够记 ...

  9. SpringBoot入门教程(十一)过滤器和拦截器

    在做web开发的时候,过滤器(Filter)和拦截器(Interceptor)很常见,通俗的讲,过滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西:拦截器可以简单理解为“拒你所想拒”,关心你 ...

  10. java编程行业微信群,无论新手老手欢迎加入,会一直更新

    纯技术交流群 每日推荐 - 技术干货推送 跟着泥瓦匠,一起问答交流 扫一扫,我邀请你入群 纯技术交流群 每日推荐 - 技术干货推送 跟着泥瓦匠,一起问答交流 扫一扫,我邀请你入群