当前位置:网站首页>力扣练习——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;
}
边栏推荐
猜你喜欢
随机推荐
Deep Blue Academy - Handwritten VIO Homework - Chapter 2
直播 | 7.30 ApacheCon Asia 2022 IOT/IIOT专题,IoTDB PMC 乔嘉林担任出品人
Unreal回放系统剖析(上)
The line chart with square PyQt5_pyqtgraph mouse
今天突然下雨
学内核之五:问题一,关于上下文切换
ROS visualization of 3D target detection
力扣练习——39 正方形数组的数目
Use the advanced timer of GD32F207 to generate hidden bugs in PWM waves
跑通CogView教程
gergovia's deal tijie
如何解决QByteArray添加quint16双字节时错误?
P1192 台阶问题
Platts Analysis-MATLAB Toolbox Function
Scala basics [common method supplement, pattern matching]
开放原子开源峰会落幕,百度超级链牵头成立XuperCore开源工作组
关于地图GIS的一次实践整理(下) Redis的GIS实践
Arduino框架下 ESP32看门狗使用示例
ADSP21489仿真:Failed to set breakpoint: Can‘t set breakpoints in the current state: Running
我们擅长的地方很多









