两道面试题

一、统计字符串封闭区间
一个数字或字符在形状上可能存在封闭的区间,比如数字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}T\d{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) 

 

posted on 2021-06-21 15:32  懒得显示  阅读(1476)  评论(0编辑  收藏  举报