小言_互联网的博客

Leetcode典型题解答和分析、归纳和汇总——T93(复原IP地址)

428人阅读  评论(0)

问题描述:

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

问题分析:
采用回溯算法进行求解。


  
  1. class Solution {
  2. public:
  3. vector< string> restoreIpAddresses( string s) {
  4. string ip;
  5. helper(s, 0, ip);
  6. return res;
  7. }
  8. void helper(string s, int n, string ip) {
  9. if (n == 4) {
  10. if (s.empty()) res.push_back(ip); //当已经有3个数字可以作为一个字节,并且s字符串为空
  11. }
  12. else {
  13. for ( int k = 1; k < 4; ++k) {
  14. if (s.size() < k) break; //当长度不够,直接退出
  15. int val = stoi(s.substr( 0, k)); //stoi表示将string类型数据转换成int类型数据
  16. if (val > 255 || k != std::to_string(val).size()) continue; //剪枝
  17. helper(s.substr(k), n + 1, ip + s.substr( 0, k) + (n == 3 ? "" : ".")); //s.substr(0, k) + (n == 3 ? "" : ".")是字符串的连接操作,不是整数
  18. }
  19. }
  20. return;
  21. }
  22. private:
  23. vector< string> res;
  24. };

 


转载:https://blog.csdn.net/weixin_44504987/article/details/104518697
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场