当前位置: 移动技术网 > IT编程>开发语言>.net > 简单算法整理

简单算法整理

2020年07月07日  | 移动技术网IT编程  | 我要评论

回文数:

a=input('输入:')
b=a[::-1]
if a==b:
    print('{} 是回文数'.format(a))
else:
    print('{} 不是回文数'.format(a))

斐波那契数列:

## 迭代器:斐波那契数列
class FeiBo():
    def __init__(self,n):
        self.a = 1
        self.b = 1
        self.c = 0
        self.n = n

    def __iter__(self):
        return self

    def __next__(self):
        if self.c < self.n:
            r = self.a
            self.a,self.b = self.b, self.a+self.b
            self.c+=1
            return r
        else:
            raise StopIteration

f=FeiBo(9)
for i in f:
    print(i)
    # ## 生成器:
#
# def FeiBo(n):
#     a=1
#     b=1
#     for i in range(n):
#         yield a
#         a,b=b,a+b
# f=FeiBo(10)
# for i in f:
#     print(i)

是否存在重复字母:

1 def uu():
 2     str='nsjadsabjkfas'
 3     b=set()
 4     for i in str:
 5         b.add(i)
 6     if len(b)==len(str):
 7         return True
 8     else:
 9         return False
10 a=uu()
11 print(a)

是否存在重复字母

输出四个六:

"""
输出4个6
"""
def num():
    return [lambda x:i*x for i in range(4)]
print([m(2) for m in num()])

"""
将列表推导式[]变成(),相当于生成一个生成器,没有参数延时生效
输出:[0, 2, 4, 6]
"""
def num():
    return (lambda x:i*x for i in range(4))
print([m(2) for m in num()])


"""
在列表推导式中及时传参,i=i
输出:[0, 2, 4, 6]
"""
def num():
    return [lambda x,i=i:i*x for i in range(4)]
print([m(2) for m in num()])
def get_index(nums, target):
    """
    :param nums:传的参数列表
    :param target:目标值
    :return:索引值列表
    """
    index_dict={

    }
    for index,num in enumerate(nums):
        tem=target-num
        tem_index=index_dict.get(tem,'')
        if tem_index:
            print(tem_index,index)
        else:
            index_dict[num]=index

if __name__ == '__main__':
    pp = get_index([2, 4, 5, 8, 1, 11, 4, 15, 7], 9)

利用队列实现栈:

class Stack(object):
    '''栈'''
    def __init__(self):
        self.__list = []

    def push(self, item):
        '''添加一个元素item到栈'''
        self.__list.append(item)

    def pop(self):
        '''弹出栈顶元素'''
        return self.__list.pop()

    def peek(self):
        '''返回栈顶元素'''
        if self.__list:
            return self.__list[-1]
        else:
            return None

    def is_empty(self):
        '''判断是否为空'''
        return self.__list == []
        # return not self.__list

    def size(self):
        '''返回栈的元素个数'''
        return len(self.__list)


if __name__ == '__main__':
    s = Stack()

一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?

a = [100]  #每个‘反弹落地’过程经过的路程,第1次只有落地(100米)
h = 100  #每个‘反弹落地’过程,反弹的高度,第1次为100米
print('第1次从%s米高落地,走过%s米,之后又反弹至%s米。' % (h, a[0], h/2))
for i in range(2,11):  #第1次已初始化,再循环9次
    a.append(h)  #先计算路程,再高度减半,因为一个‘反弹落地’为2个高度
    h = h / 2
    print('第%s次从%s米高落地,共走过%s米,之后又反弹至%s米。' % (i, h, sum(a), h / 2))
s = "Let's take LeetCode contest"
b=" ".join(s.split(' ')[::-1])[::-1]
print(b)
s="Let's take LeetCode contest"
b=s.split(' ')
c=' '.join([i[::-1] for i in b])
print(c)

代码仅供参考,有不足之处望指正

本文地址:https://blog.csdn.net/weixin_49189239/article/details/107155183

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网