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