Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41148
  • 博文数量: 37
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 372
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-12 23:27
文章分类

全部博文(37)

文章存档

2014年(5)

2013年(32)

我的朋友

分类: C/C++

2013-12-25 15:45:20

递归即可。



点击(此处)折叠或打开

  1. class Solution {
  2. public:
  3.     void getIp(string s, string tmp, int cnt)
  4.     {
  5.         if(4==cnt) {if(s.empty()) re.push_back(tmp); return;}
  6.         if(s.length()<strlen("1")*(4-cnt)||s.length()>strlen("123")*(4-cnt)) return;
  7.         tmp+=".";
  8.         int val=0;
  9.         string str;
  10.         for(int i=0;i<strlen("123")&&i<s.length();i++)
  11.         {
  12.             val=10*val+s[i]-'0';
  13.             str=tmp;
  14.             if(0<=val&&val<=255&&(0==i||(i>0&&s[0]!='0')))
  15.             {
  16.                 getIp(s.substr(i+1,s.length()-i-1), str+=s.substr(0,i+1), cnt+1);
  17.             }
  18.         }
  19.     }
  20.     vector<string> restoreIpAddresses(string s) {
  21.         re.clear();
  22.         if(s.length()<strlen("1111")||s.length()>strlen("123123123123")) return re;
  23.         int val=0;
  24.         for(int i=0;i<strlen("123");i++)
  25.         {
  26.             val=10*val+s[i]-'0';
  27.             if(0<=val&&val<=255&&(0==i||(i>0&&s[0]!='0')))
  28.             {
  29.                 getIp(s.substr(i+1,s.length()-i-1), s.substr(0,i+1), 1);
  30.             }
  31.         }
  32.         return re;
  33.     }
  34. private:
  35.     vector<string> re;
  36. };

阅读(553) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~