两道面试题

一、统计字符串封闭区间
一个数字或字符在形状上可能存在封闭的区间,比如数字8有两个封闭区间,大写字母A有一个封闭区间。小写字母c和数字5则没有封闭区间、

def get_num(string):
    num = 0
    for i in string:
        if i in "8B":
            num += 2
        elif i in "4690qeopadgbQROPAD":
            num += 1
    return num

二、字符串排序

解析输入的字符串数组,提取出字符串中的时间戳信息,并且将字符串按照时间戳排序后,输出到控制台。

每个字符串由“/-:”和字母、数字组成,时间戳在字符串中的位置不确定,时间戳格式为:2019-01-01T07:20:20。

输出描述:

将输入的字符串按照时间戳进行从小到大排序后,输出。符合如下规则:

1、如果时间戳信息相同,按照字符串长度从小到大进行排序;

2、如果长度相同,则按照从首字符开始的ASCII码值比较,从小到大进行排序;

3、如果两个字符串完全一样,则只需要输出一个

import re
import datetime

def sort_arry(arry):
    com = re.compile(r"d{4}-d{2}-d{2}Td{2}:d{2}:d{2}")
    sort_key = lambda arr:(datetime.datetime.strptime(str(re.findall(com, arr)[0]), "%Y-%m-%dT%H:%M:%S"), len(arr), ord(arr[0]))

    return sorted(list(set(arry)), key=sort_key) 
原文地址:https://www.cnblogs.com/fansirs/p/14913683.html