潘总的题目

单词reverse

有一句英文语句,现在需要根据单词顺序反转输出,为了方便,句子最后的句号和最后的一个单词连起来,例如: "this is a students." 输出 "students. a is this"

做python的面试题,尽量就pythonista,

def get_reversed(sentence):
    if not instance(sentence, basestring):
        return None
    return " ".join(reversed(sentence.split(" ")))

字符移位

给你一个字符串,输入一个n,返回字符串向右移动n位的结果。 (可循环)例如abc移动两位就是bca

def move_char(string, n):
    if not instance(sentence, basestring):
        return None
    if not len(string) > n:
        return None
    return string[n:] + string[:n]

O(n)时间复杂度的排序

数据库中员工表中有工号字段,按照工号字段排序,时间复杂度为O(n),n为员工数

那时候我表示怀疑,sorted方法的时间复杂度为O(n)

# 这里假设datas就是从数据库中取出来的值,工号字段为"number"
sorted(datas, key=lambda x: x["number"])

多少种组合的情况

输入[[1,4,7], [3], [9, 2], ...] 输出组合:[[1,3,9, ...], [1,3,2, ...] ..]

这叫做笛卡尔积吧,这里可以手撸,体现自己的算法思路,也可以使用itertools模块

# 这里假设输入为items, combinations就是输出结果
import itertools
combinations = itertools.product(*items)

详细实现可以看这里 或者 官方文档