Python题做起来


(自己的想法,不喜勿喷,欢迎大佬指教,共同进步)
(声明:本教程仅供本人学习使用,如有人使用该技术触犯法律与本人无关)


写一个函数实现两个1万位的正整数相加(自己定义输入和输出)


def result_sum(a, b):
    str_a = str(a)
    str_b = str(b)
    alist = []
    for i in range(1, 100):
        result = int(str_a[-(10 * i): -(10 * (i - 1))]) + int(str_b[-(10 * i): -(10 * (i - 1))])
        alist.append(str(result))

    for j in range(len(alist)):
        if len(alist[j]) > 10:
            alist[j + 1] = str(int(alist[j + 1]) + int(alist[j][:-10]))
            alist[j] = alist[-10:]

    return ''.join(alist[::-1])


三角形

         1
        1,1
       1,2,1
      1,3,3,1
     1,4,6,4,1
     .....
# !/usr/bin/python
# -*- coding:utf-8 -*-


def yhsj(nums, alist):
    if nums < 2:
        return alist[:nums]
    else:
        for i in range(2, nums):
            # 行开头
            son_list = [1, ]
            # 找到上一行
            for j in range(len(alist[i - 1]) - 1):
                # 添加到这一行
                son_list.append(alist[i - 1][j] + alist[i - 1][j + 1])
            # 行收尾
            son_list.append(1)
            alist.append(son_list)
        return alist


if __name__ == "__main__":
    alist = [[1], [1, 1]]
    for i in yhsj(2, alist):
        print(i)


最长回文字符串

类型一:
		输入:abccba
		输出:bccb
类型二:
		输入:adbcbdc
		输出:dbcbd
# !/usr/bin/python
# -*- coding:utf-8 -*-



long_str = ""


def longStr(s: str) -> str:
    """
    :param s: 输入的字符串
    :return: 返回的最大回文字符串
    """
    global long_str
    n = len(s)

    def changeStr(i, j):
        global long_str
        while i > 0 and j < n and s[i] == s[j]:
            i -= 1
            j += 1
        if len(long_str) < j - i - 1:
            long_str = s[i + 1: j]

    for i in range(n):
    	# 字符串为 xxsxx 型
        changeStr(i, i)
        # 字符串为 xxssxx 型
        changeStr(i, i + 1)

    return long_str
发布了26 篇原创文章 · 获赞 2 · 访问量 1405

猜你喜欢

转载自blog.csdn.net/weixin_43633797/article/details/103524600
今日推荐