如何不使用Python str()函数生成整数组合的直角回文三角形?
生成直角回文三角形的优化实现
目标输出
1
121
12321
1234321
123454321
原有实现代码
def generate_palindromic_triangle(n): for i in range(1, n + 1): line = "" for j in range(1, i + 1): line += str(j) for j in range(i - 1, 0, -1): line += str(j) print(line) # Example usage generate_palindromic_triangle(5)
约束条件
- 仅使用整数进行操作
- 时间复杂度为线性或更低
- 最多使用1条print语句
优化后的代码
def generate_palindromic_triangle(n): lines = [] ones_num = 0 for i in range(1, n + 1): ones_num = ones_num * 10 + 1 # 生成由i个1组成的整数 lines.append(str(ones_num ** 2)) print('\n'.join(lines)) # 示例调用 generate_palindromic_triangle(5)
实现说明
- 整数操作实现:利用数学规律——第i行的回文数等于i个1组成的整数的平方(比如3个1组成的111,平方后是12321),通过
ones_num = ones_num *10 +1逐步生成对应整数,再计算平方,全程仅用整数运算。 - 时间复杂度:循环执行n次,每次整数运算都是O(1)操作,最后拼接字符串和打印的总时间为O(n),满足线性复杂度要求。
- 单条print语句:将所有行的字符串结果存入列表,最后用换行符拼接成一个整体字符串,一次打印完成输出。
内容的提问来源于stack exchange,提问作者user3521180
相关产品推荐
相关产品推荐

