[leetcode] 93.Restore IP Addresses
2015-08-30 16:02
393 查看
题目:
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given “25525511135”,
return [“255.255.11.135”, “255.255.111.35”]. (Order does not matter)
题意:
给定一个字符串,代表了IP地址,现在需要返回所有的合法的IP地址。
思路:
我们知道IP地址可以用点分十进制表示,而每一个点区分开来的是八个bit的数字,八个bit的数字的范围是[0,255],所以比如保证这四个数字每个数字都是在这个范围内,另外需要保证的是不要出现01这种数字,0只能单独作为一个十进制数,或者跟在其他数后面,0不能出现在十进制数的开头,并且这个十进制还超过一位。
以上。
代码如下:
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given “25525511135”,
return [“255.255.11.135”, “255.255.111.35”]. (Order does not matter)
题意:
给定一个字符串,代表了IP地址,现在需要返回所有的合法的IP地址。
思路:
我们知道IP地址可以用点分十进制表示,而每一个点区分开来的是八个bit的数字,八个bit的数字的范围是[0,255],所以比如保证这四个数字每个数字都是在这个范围内,另外需要保证的是不要出现01这种数字,0只能单独作为一个十进制数,或者跟在其他数后面,0不能出现在十进制数的开头,并且这个十进制还超过一位。
以上。
代码如下:
class Solution { public: vector<string> restoreIpAddresses(string s) { vector<string> result; vector<string> temp; getIP(result, s, 0, 0, temp, s.length()); return result; } void getIP(vector<string>& result, string& s, int i, int j, vector<string>& temp, int strLen) { if (i == strLen) { if (j == 4) { string st = ""; for (int k = 0; k < 3; k++) { st += temp[k] + "."; } st += temp[3]; result.push_back(st); } return; } else if (j == 4)return; for (int k = 1; k <= strLen - 3 + j - i; k++) { if (k > 1 && s[i] == '0')break; string sub = s.substr(i, k); if (atoi(sub.c_str()) <= 255) { temp.push_back(sub); getIP(result, s, i + k, j + 1, temp, strLen); temp.pop_back(); } else break; } } };
相关文章推荐
- CodeForces 413E Maze 2D
- javascript 1
- 0到100奇数之和
- 【翻译自mos文章】怎么检查Oracle Advanced Security Option 是否被安装上?
- 获取当前系统中的时区
- IE8下jQuery改变png图片透明度时出现的黑边
- Count Complete Tree Nodes
- 30 语句
- 机房收费问题总结(二)
- CSS 选择器
- Boundaries
- 【c程序】关于宏
- iOS: ARC和非ARC下使用Block属性的问题
- Linux网络栈剖析—从socket到设备驱动程序
- C#软件winform程序安装包制作
- 第二章 创建和销毁对象(上)
- Error Handling
- hdu 5423 统计树每一层的节点树 dfs
- 鸡兔同笼
- iOS 状态栏(UIStatusBar)的相关设置