• 字符串返回数组并排序(算法题)


    今天在微信群里看到有人抛出这么一道题:

    string = "192.0.0.1?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.1"
    #要求返回一个ip数组,并且按照ip最后一位排序返回

    第一想法就是,把这串字符串根据正则去除里面的特殊符号,得到一个新的数组,然后将新数组里面的元素切片,根据得到元素最后一个数字进行排列,从而得到结果返回这个数组。

    1 import re
    2 string = "192.0.0.1?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.1"
    3 #要求返回一个ip数组,并且按照ip最后一位排序返回
    4 str_list = re.split('?!|!|?', string)
    5 new_list = sorted(str_list, key=lambda x: x[-1])
    6 print(new_list)

    但是仔细想了一下,本不存在289.0.0.1这样的ip,可见这道题纯粹是为了出题而出题。

    所以心里想着,可以优化一下代码,对里面的ip格式进行判断。故得到如下代码:

     1 import re
     2 result = []
     3 string = "192.0.0.1?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.1"
     4 str_list = re.split(r"?!|?|!", string)
     5 for ip in str_list:
     6     ip_list = ip.split(".")
     7     if len(ip_list) == 4:
     8         for i in ip_list:
     9             if eval(i) > 255 or eval(i) < 0:
    10                 break
    11         else:
    12             result.append(ip)
    13 result = sorted(result, key=lambda x: x[-1])
    14 print(result)

    从运算结果可以得知,我将不满足ip格式的元素,从这个数组里面去除了。

  • 相关阅读:
    从OkHttp的源码来看 HTTP
    从Retrofit的源码来看 HTTP
    登录授权、TCP/IP、HTTPS
    编码、加密、Hash
    java获取当前系统时间
    mybatis自动生成
    rabbitMQ权限相关命令
    在Spring Boot中使用Spring Security实现权限控制
    学习sharding-jdbc 分库分表扩展框架
    Jenkins的关闭、重启
  • 原文地址:https://www.cnblogs.com/chenshengkai/p/11935782.html
Copyright © 2020-2023  润新知