面试:字符串: 提取IP地址

2023-10-27

题目

给定一个只含数字的字符串,返回所有合法的ip地址


算法

  1. ip地址是4段
  2. 每段三个情况:
    (1) 只取一个数字
    (2) 取两个数字,第一个数字不是0
    (3) 取三个数字,第一个数字不是0,而且三个数组成的数小于256
    //递归

import java.util.*;


class Solution{
    public ArrayList<String> restoreIpAddress(String s){
        ArrayList<String> res=new ArrayList<String>();
        String ip="";
        restoreIpAddress(s,0,0,ip,res);
        return res;
    }

    private void restoreIpAddress(String s,int start,int part,String ip, ArrayList<String> res){
        //数字多,则忽略
        if(s.length() -start >(4-part)*3) return;
        //数字太少也忽略
        if(s.length()-start <(4-part))  return;
        //找到一个合法的ip
        if(start==s.length() && part ==4) {
            //把最后一个抹去
            res.add(ip.substring(0,ip.length()-1));
            return;
        }
        int num =0;
        for(int i=start;i<Math.min(start+3,s.length());i++){
            //每个位置有三种可能
            num = num*10 +(s.charAt(i)-'0');
            if(num<=255){
                //每段ip地址的数字都是小于256
                ip+=s.charAt(i);
                restoreIpAddress(s,i+1,part+1,ip+'.',res);
            }
            //如果第一个是0的话,只考虑0,不考虑0x组成的地址
            if(num==0)  break;

        }
        }
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试:字符串: 提取IP地址 的相关文章

  • 【器件选型】TVS二极管在复杂电路中的三大应用

    欢迎关注 玩转单片机与嵌入式 公号 回复关键字获取更多免费视频和资料 回复 加群 单片机 STM32 硬件知识 硬件设计 经典电路 论文 毕业设计 3D封装库 PCB 电容 TVS 阻抗匹配 资料 终端电阻 Keil 485 CAN 振荡器
  • Spark Streaming实现WordCount

    利用Spark Streaming实现WordCount 需求 监听某个端口上的网络数据 实时统计出现的不同单词个数 1 需要安装一个nc工具 sudo yum install y nc 2 执行指令 nc lk 9999 v import
  • 纯JS实现购物车&jQuery实现购物车

    目录 案例 纯JS实现购物车 主要功能 案例 jQuery实现购物车 主要功能 案例 纯JS实现购物车 主要功能 全选 全不选 单个删除 批量删除 数量的增减 合计
  • 机器学习 day33(误差分析、添加数据、迁移学习)

    误差分析 我们可以手动查看分类错误的子集样本 通常为100个 并统计他们的错误类型 在所有错误类型中 选择一种或几种最常见的错误 进行改进 这可以最高效的改进你的模型 误差分析的一个限制是 它只能很好的解决人类擅长的问题 添加数据 添加数据
  • 2.6 内核 tasklet 和workqueue 的区别

    work queue 跟tasklet 不同 1 work queue 运行环境的是内核线程 所以可以休眠 可以分配内存 获得信号量 执行阻塞I O 2 tasklet 的运行环境是软中断 所以不能休眠 3 tasklet的使用跟timer
  • 串口异步通信——时序宽度测试

    一般情况下串口 bit 1 与 bit 0 宽度能基本维持对等 脉宽接近 把串口 0x55 理解为一个占空比为50 的方波 在占空比接近50 的情况下 通信一般不会出现错误 但是 在一些脉宽有损失的场景中 则非常需要注意脉冲宽度要求 使用波
  • Unity中射线Ray和RaycastHit的简单介绍

    射线是在三维世界中从一个点沿一个方向发射的一条无限长的线 在射线的轨迹上 一旦与添加了碰撞器的模型发生碰撞 将停止发射 我们可以利用射线实现子弹击中目标的检测 鼠标点击拾取物体等功能 1 Physics Raycast public sta
  • pycharm修改快捷键

    pycharm修改快捷键 很多使用使用pythcharm的同学 如果想运行程序 通常需要 第一步右键 第二步 选择运行或者直接点击运行 但是往往厉害的程序员 一般直接键盘操作 如果你使用pycharm自带的快捷键 需要按下 Ctrl Shi
  • Python3 使用 selenium 获取 JS 代码里边的变量值

    from selenium import webdriver driver webdriver Ie r IEDriverServer exe 找一个合适版本的IEDriver js var hello hello world return
  • C语言实验——大小写转换oj1168

    C语言实验 大小写转换 Time Limit 1000ms Memory limit 65536K 有疑问 点这里 题目描述 把一个字符串里所有的大写字母换成小写字母 小写字母换成大写字母 其他字符保持不变 输入 输入为一行字符串 其中不含
  • 数据结构与算法 -- 基础篇

    本文主要用于记录学习过程中的一些总结 适用于一些刚学习数据结构和算法的同学 能够给予一些概括性认识 而且从下面的一些算法题中能够获得一些对于算法题目常用解题思路 如果能够对你有些帮助 是我之幸 接下来 将一共分为三部分来介绍如下内容 1 基
  • ElasticSearch 数据迁移方案

    一个人不论赋有什么样的棋 他如果不知道自己有这种棋 并且不形成适合于自己棋的计划 那种棋对他便完全无用 休漠 ElasticSearch 常用api ElasticSearch 版本说明 name node 3 cluster name t
  • python3 题解(10)打印金字塔1

    打印金字塔1 问题 用星号在控制台上输出一个金字塔的形状 可以看出 它的第n行的星号的个数是 2 n 1 这个问题的思路可以很多 比如 先造出指定数目的星号 再计算出前后补的空格数 这里采用如下的思路 已知了n 最后一行的星号的数目就固定了
  • 杭电ACM-A+B problem

    topic Calculate A B Input Each line will contain two integers A and B Process to end of file Output For each case output
  • QT QDockWidget 重叠方法

    主要通过如下红色代码的方法实现 效果图片如下 代码如下 void MainWindow createDockWindows QDockWidget dock new QDockWidget tr Customers this dock gt
  • curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443

    MacOS系统使用 Homebrew 官方地址时 报错 Mac安装homebrew的时候报错 Mac bin bash c curl fsSL https raw githubusercontent com Homebrew install
  • 自定义openwrt的配置界面:luci进阶之路

    5 20 晴 今天的太阳挺大的 晒得我进园区直接37 3警告 于是我百度搜索微信朋友圈怎么关闭 才把温度稳定下来 算了算了 上班说事 由于公司部门调动 逐渐接触到新的知识 新的模块 还听说这玩意比较冷门 没办法 该搞还是得搞 又不是搞不了
  • 渗透测试技术----常见web漏洞--命令执行原理及防御

    一 命令执行漏洞介绍 1 命令执行漏洞简介 命令执行漏洞时指服务器没有对执行的命令进行过滤 用户可以随意执行系统命令 命令执行漏洞属于高危漏洞之一 也属于代码执行的范围内 2 命令执行漏洞的原理 应用程序有时需要调用一些执行系统命令的函数
  • 嵌入式AI助力当代商业的发展

    数字化转型的业务影响是广泛的 但购买者应寻求嵌入式AI在以下领域具有最大的影响力 1 业务流程和任务的自动化 当买家搜索购买包含AI的软件时 他们应该研究该解决方案为员工自动执行日常任务的方式 嵌入式AI应该节省员工的时间和精力 以便他们可

随机推荐

  • 华为文稿演示服务器操作异常修复,修复服务器

    修复服务器 内容精选 换一换 安装Agent插件后 修复插件配置为用户提供了一键配置AK SK RegionID ProjectId的功能 省去了繁琐的手动配置步骤 提升配置效率 目前大部分区域已上线一键式授予该区域插件权限功能 即自动修复
  • java编码 第一次

    这是java的快速入门 演示java的开发步骤 对代码的相关说明 1 public class Hello 表示Hello是一个类 是一个public公有的类 2 Hello 表示一个类的开始和结束 3 public static void
  • java循环while之等差数列均值_java基础_while 循环语句的定义及用法

    一 while 循环语句的定义 在 C 语言中 while 循环是除了 for 循环外最常用的循环语句 相对于 for 循环而言 while 循环更多地应用于循环次数未定的循环控制中 while 循环的一般表达形式为 while 表达式 循
  • 色温

    色温是表示光线中包含颜色成分的一个计量单位 从理论上说 黑体温度指绝对黑体从绝对零度 273 开始加温后所呈现的颜色 黑体在受热后 逐渐由黑变红 转黄 发白 最后发出蓝色光 当加热到一定的温度 黑体发出的光所含的光谱成分 就称为这一温度下的
  • 线程池OOM错误

    1 LinkedBlockingQueue报错 package com spring pro threadpool completableFuture youhua test import java util concurrent Exec
  • 【场景】大数据常考场景题 - Bitmap

    大数据开发面试通常会问场景题 主要考察大数据中常用的数据结构 比如 Bitmap Bloom Filter 等等 今天就说一个工作中碰到的 比如昨天说到的问题 用户要在自定义时间区间内查询 就需要快速响应 可能用到 ClickHouse 可
  • Ubuntu 下安装 apt-get install npm

    步骤一 sudo apt get remove nodejs npm 删除原来的 sudo apt get install curl curl sL https deb nodesource com setup sudo bash sudo
  • 第十一届蓝桥杯国赛 奇偶覆盖

    我的主要思路是找到每个矩形内的单位方格 再使用set集合将所有方格统计 最后在set集合里遍历每一个方格 统计其再矩形里出现的次数 即为面积 再蓝桥刷题系统上只能过30 有优化方案的欢迎私信讨论 矩形类 class The it def i
  • Angular4 使用GET向后端请求数据

    Angular4 使用GET向后端请求数据 在工程的src app app module ts的头部引入http jsonp import HttpModule JsonpModule from angular http 在工程的src a
  • 线程池实例

    public Executor asyncServiceExecutor ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor 配置核心线程数 executor setCore
  • 日常Linux操作命令使用手册

    OS 查看操作系统 cat etc issue GPU 查看GPU 利用率 nvidia smi 文件和空间 查看linux文件目录的大小和文件夹包含的文件数 查看磁盘使用情况 df h 统计总数大小 du sh xmldb du sm s
  • Java: 断言(assert)

    断言 assert 语句一般用于程序不准备通过捕获异常来处理的错误 例如 账号交易时 对于支出的金额为正数 收入 支出 纯收入 或者收入的金额为负数 程序必须立即停止执行 同时发现错误 当正式收益时 就可以避开错误 但仍保留断言语句在程序中
  • 6.28同花顺笔试

    笔试共22题 题型比较多 选择 简答 编程 开放逻辑题都有 笔试时长2h 对深度学习方面考察的比较多 包含性能评价指标 常见定义等 选择题与简答题 1 提高深层神经网络特征表达能力的方法 题目问的下列哪个方法无法用来提高 a 增加层深度 b
  • 微信小程序遇到does not have a method “xxxx“ to handle event “tap“

    刚开始学小程序的小白 学到事件绑定的时候 跟着老师的步骤一步一步把代码输入好 结果发现和老师的结果不大一样 我在网上找了很多方法 有说多打空格的 有说要写进method 里的 都试过 没用 结果意外之下 我随手取消勾选 将JS编译成ES5
  • 2022.08 VMware官网下载安装+配置Linux虚拟机,最新最全

    前言 文章概要叙述 步骤一 安装VMware VMware 安装包下载 VMware官方下载页面 1 1小节 步骤二 配置虚拟机 步骤三 安装操作系统 CentOS7 9 镜像文件下载 CentOS阿里云镜像下载页 2 2 1小节 一 VM
  • UE4 获取目录下所有的图片转换成Texture2D并通过UMG显示出来

    主要内容 本文主要讲解简单插件的编写 将类继承至Subsystem 子系统 框架的好处 鼠标射线检测以及鼠标拖拽功能的实现 实现步骤 一 编写插件 1 首先新建一个空的C 项目 然后新建插件 Author是作者名 Description是描
  • 《Linux入门与基础》课程教案

    Linux入门与基础 linux的目录结构 打开终端 输入ls查看linux根目录下的情况 ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sy
  • 常用电路设计之分频器的设计

    引言 分频器在实际数字电路设计中是最基础的 也是最重要的 常见的分频器主要有偶数倍分频器 奇数倍分频器 半整数倍分频器 任意小数倍分频器等 本文主要对最常用的偶数倍分频器和奇数倍分频器展开介绍 1 偶数倍分频器 偶数倍分频器通过计数器可以很
  • uniapp自定义tabbar,中间凸起(支持H5、微信小程序)

    最近公司需要做一款app 需要中间按钮凸起 在网上找了一些 参考文献 做了一个demo H5效果图如下 小程序效果图如下 目录结构如下 page json的配置如下 pages path pages index index style na
  • 面试:字符串: 提取IP地址

    题目 给定一个只含数字的字符串 返回所有合法的ip地址 算法 ip地址是4段 每段三个情况 1 只取一个数字 2 取两个数字 第一个数字不是0 3 取三个数字 第一个数字不是0 而且三个数组成的数小于256 递归 import java u