题目链接

leetcode 93. Restore IP Addresses

题意

给定一段序列,判断可能组成ip数的所有可能集合

思路

可以采用模拟或者DFS的想法,把总的ip数分成四段,每段判断是否满足题意

  1. class Solution {
  2. public:
  3. vector<string> ans;
  4. vector<string> restoreIpAddresses(string s){
  5. if(!s.size()) return ans;
  6. solve(0,0,s,"");
  7. return ans;
  8. }
  9. //方法二: dfs
  10. void solve(int p,int cnt,string &s,string tmp){
  11. if(cnt>=4 && p<s.size()) return ;
  12. if(p>=s.size()){//分成4段
  13. if(cnt==4){
  14. ans.push_back(tmp);
  15. }
  16. return ;
  17. }
  18. for(int i=1;i<=3;i++){//每段的长度最长不超过3
  19. if(p+i>s.size()) return;
  20. string t=s.substr(p,i);
  21. int it=stoi(t);
  22. if(to_string(it)!=t || it>255) continue;
  23. // if(!cnt) tmp+=t;
  24. // else tmp+="."+t;
  25. solve(p+i,cnt+1,s,tmp+(cnt?"."+t:t));
  26. }
  27. }
  28. //方法一:直接遍历所有情况
  29. vector<string> restoreIpAddresses(string s) {
  30. int n=s.size();
  31. if(!n) return ans;
  32. for(int a=1;a<=3;a++)
  33. for(int b=1;b<=3;b++)
  34. for(int c=1;c<=3;c++){
  35. int d=n-(a+b+c);
  36. if(d<1 || d>3) continue;
  37. string a1=s.substr(0,a);
  38. string b1=s.substr(a,b);
  39. string c1=s.substr(a+b,c);
  40. string d1=s.substr(a+b+c);
  41. if(to_string(stoi(a1))!=a1 || to_string(stoi(b1))!=b1 ||
  42. to_string(stoi(c1))!=c1 || to_string(stoi(d1))!=d1) continue;
  43. if(stoi(a1)>255 || stoi(b1)>255 || stoi(c1)>255 || stoi(d1)>255) continue;
  44. ans.push_back(a1+"."+b1+"."+c1+"."+d1);
  45. }
  46. return ans;
  47. }
  48. };

leetcode 93. Restore IP Addresses(DFS, 模拟)的更多相关文章

  1. 93. Restore IP Addresses(dfs)

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  2. [LeetCode] 93. Restore IP Addresses 复原IP地址

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  3. LeetCode : 93. Restore IP Addresses

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABZ4AAAHUCAYAAAC6Zj2HAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVlw

  4. leetcode 93 Restore IP Addresses ----- java

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  5. 93.Restore IP Addresses(M)

    93.Restore IP Addresses Medium 617237FavoriteShare Given a string containing only digits, restore it ...

  6. 【LeetCode】93. Restore IP Addresses

    Restore IP Addresses Given a string containing only digits, restore it by returning all possible val ...

  7. 93. Restore IP Addresses

    题目: Given a string containing only digits, restore it by returning all possible valid IP address com ...

  8. 【leetcode】Restore IP Addresses

    Restore IP Addresses Given a string containing only digits, restore it by returning all possible val ...

  9. 【LeetCode】93. Restore IP Addresses 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 回溯法 日期 题目地址:https://leetco ...

随机推荐

  1. Python 学习笔记 之 02 - 高级特性总结

    切片 语法:  li.[x:y:z]  li为list.tuple等数据类型,x为开始进行切片的位置,y为切片停止的位置(不包含y),z为xy切片后的结果里,每间隔z个元素输出一次结果.  x默认为0 ...

  2. CET4词汇

    abandon vt.丢弃:放弃,抛弃 ability n.能力:能耐,本领 abnormal a.不正常的:变态的 aboard ad.在船(车)上:上船 abroad ad.(在)国外:到处 ab ...

  3. Flink读写Redis(三)-读取redis数据

    自定义flink的RedisSource,实现从redis中读取数据,这里借鉴了flink-connector-redis_2.11的实现逻辑,实现对redis读取的逻辑封装,flink-connec ...

  4. oracle 常用语句2

    -- number(38) -- char(2000) -- varchar(4000) create table student( sno number(3) primary key, sname ...

  5. js下 Day15、正则表达式

    一.正则表达式简介 什么是正则表达式 正则表达式,也叫规则表达式, 是对字符串操作的一种逻辑公式. 为什么要使用正则? 1.使用极简单的方式,去匹配字符串 2.速度快,代码少 3.在复杂的字符串中快速 ...

  6. 移动端 canvas基础1

    一.canvas画布 Canvas是HTML5中新出的一个元素,开发者可以通过JS脚本动态绘制图像. #1. 创建canvas画布 在页面中创建canvas标签,并设置其id和宽高 (不要通过css设 ...

  7. matplotlib的学习7-tick能见度

    import matplotlib.pyplot as plt import numpy as np ''' 当图片中的内容较多,相互遮盖时,我们可以通过设置相关内容的透明度来使图片更易于观察,也即是 ...

  8. linux不同环境变量文件的比较,如/etc/profile和/etc/environment

    /etc/profile 为系统的每个用户设置环境信息和启动程序,当用户第一次登录时,该文件被执行,其配置对所有登录的用户都有效. 当被修改时,必须重启才会生效.英文描述:"System w ...

  9. 实验1 C语言开发环境使用和编程初体验

    #include <stdio.h> #include <stdlib.h> int main() { printf ("202083290273\n2020 ,wh ...

  10. Liunx运维(七)-用户管理及用户信息查询命令

    文档目录: 一.useradd:创建用户 二.usermod:修改用户信息 三.userdel:删除用户 四.groupadd:创建新的用户组 五.groupdel:删除用户组 六.passwd:修改 ...