zoukankan      html  css  js  c++  java
  • 字符串返回数组并排序(算法题)

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

    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格式的元素,从这个数组里面去除了。

  • 相关阅读:
    旧键盘 (20)
    人口普查(20)
    打印沙漏(20)
    程序运行时间(15)
    反转链表 (25)
    科学计数法 (20)
    组个最小数 (20)
    python yield使用
    python如何优雅判断类型
    python中如何优雅使用import
  • 原文地址:https://www.cnblogs.com/chenshengkai/p/11935782.html
Copyright © 2011-2022 走看看