当前位置:网站首页>力扣练习——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;
}
边栏推荐
猜你喜欢
Excel skills daquan
A Practical Arrangement of Map GIS Development Matters (Part 1)
Qt编写物联网管理平台49-设备模拟工具
7亿听众背后的在线音频掘金故事
PyQt5_pyqtgraph鼠标在折线图上画直线
jetracer_pro_2GB AI Kit system installation instructions
Research Notes (6) Indoor Path Planning Method Based on Environment Perception
如果有些字段不想进行序列化怎么办?
redis基础入门
Minecraft 1.18.1、1.18.2模组开发 23.3D动画盔甲制作
随机推荐
【C语言程序】求直角三角形边长
安装部署 Kubernetes 仪表板(Dashboard)
Qt处理传输协议数据时QByteArray添加多字节的使用案例
康威定律对于系统架构很重要吗?
Scientific research notes (5) SLAC WiFi Fingerprint+ Step counter fusion positioning
关于地图GIS开发事项的一次实践整理(上)
ROS visualization of 3D target detection
数据复制系统设计(3)-配置新的从节点及故障切换
力扣练习——40 区间和的个数
力扣练习——41 对称二叉树
Deep Learning Basics Overfitting, Underfitting Problems, and Regularization
MySQL存储函数详解
What if some fields don't want to be serialized?
轮询和长轮询的区别
立方体卫星Light-1
我们擅长的地方很多
Line generation 005
lvm扩容(实战无废话)
如何解决QByteArray添加quint16双字节时错误?
RuoYi-App启动教程