当前位置:网站首页>力扣练习——37 复原IP地址
力扣练习——37 复原IP地址
2022-08-02 04:18:00 【qq_43403657】
37 复原IP地址
1.问题描述
给定一个只包含数字的字符串,复原它(在中间插入点号)并返回所有可能的 IP 地址格式,输出可能的格式的数量。
有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间)组成,整数之间用 ‘.’ 分隔。
示例:
输入: “25525511135”
输出: 2
说明:因为可能的IP地址包括:[“255.255.11.135”, “255.255.111.35”]
2.输入说明
输入一个只包含数字的字符串
3.输出说明
输出一个整数
4.范例
输入
25525511135
输出
2
5.代码
#include <iostream>
#include <queue>
#include <cstdlib>
#include <string>
#include<set>
using namespace std;
vector<string> ans;
vector<string> path; // 保存ip地址的每一个段
int n;
//检查IP段是否合法
bool check(string num) {
// 检测前导0
if (num.size() > 1 && num[0] == '0')
return false;
//stoi 实现string to integer
return stoi(num) <= 255; // 每个部分均小于等于255
}
void backtracking(string s, int start, int cnt) {
if (cnt == 4 && start == n) {
if (start < n) return; // 已经有四段了,但数字没有用完,剪枝
ans.push_back(path[0] + '.' + path[1] + '.' + path[2] + '.' + path[3]);
return;
}
for (int len = 1; len <= 3 && start + len - 1 < n; len++) {
// 每个数字部分位数 1-3
string num = s.substr(start, len);
if (check(num)) {
path.push_back(num);
backtracking(s, start + len, cnt + 1);
path.pop_back();
}
}
}
vector<string> restoreIpAddresses(string s)
{
n = s.size();
if (n > 12) return ans; // 最多12位
backtracking(s, 0, 0);
return ans;
}
int main()
{
vector<string>res;
string s;
cin >> s;
res = restoreIpAddresses(s);
cout << res.size() << endl;
return 0;
}
边栏推荐
- Minecraft 1.18.1, 1.18.2 module development 23.3D animation armor production
- PyQt5_pyqtgraph mouse draws straight lines on line charts
- 直播 | 7.30 ApacheCon Asia 2022 IOT/IIOT专题,IoTDB PMC 乔嘉林担任出品人
- 力扣练习——单词搜索
- Arduino框架下ESP32重启原因串口信息输出示例
- Platts Analysis-MATLAB Toolbox Function
- 【七夕】是时候展现专属于程序员的“浪漫”了
- PyQt5_pyqtgraph鼠标在折线图上画方形
- 高等数学(第七版)同济大学 总习题三(前10题) 个人解答
- Sentinel熔断之非控制台方式总结
猜你喜欢
随机推荐
Arduino框架下 ESP32看门狗使用示例
捷信将ESG理念注入企业DNA致力于提供“负责任的消费金融服务”
C语言:结构体总结
ADSP21489工程中LDF文件配置详解
轮询和长轮询的区别
斐波那契数列
互动投影墙深受展览展示喜爱的原因分析
区间和 离散化
递归实现组合型枚举(DAY 92)
从事功能测试1年,裸辞1个月,找不到工作的“我”怎么办?
【STM32】ADC采集光敏数据(不看库函数手册进行配置)
Unreal回放系统剖析(上)
我们擅长的地方很多
不会多线程还想进 BAT?精选 19 道多线程面试题,有答案边看边学
【数字IC手撕代码】Verilog固定优先级仲裁器|题目|原理|设计|仿真
6个月测试经验,面试跳槽狮子大开口要18K,只会点点点,给我整无语了。。
Visual SLAM Lecture Fourteen - Lecture 13 Practice: Designing a SLAM system (the most detailed code debugging and running steps)
跑通CogView教程
学内核之四:关于内核与硬件的衔接
力扣 剑指 Offer 56 - I. 数组中数字出现的次数









