1. 任意多行字符串拆分数值求和
编写程序,统计每行字符串中若干整数的和。
每行字符串中整数间的分隔符可能有逗号“,”、分号“ ;”和空格,有多少行就求多少行。
输入格式:
任意输入若干行由整数构成的字符串(回车换行),整数间以逗号或空格或分号分隔。测试数确保至少有一行数据,字符串中的整数数据均合法有效。最后以一个回车结束输入。
输出格式:
对应输出原输入串(一行中的字符序列),冒号后输出各个整数之和。
输入样例:
1; 2 ,3 2 3; 4 10,20 30; 40
输出样例:
1; 2 ,3:6 2 3; 4:9 10,20 30; 40:100
出处:
https://edu.csdn.net/practice/25116231
代码:
stopword = '' s = '' print('请输入内容,输入空行回车结束输入:') for line in iter(input, stopword): s = s + line + "\n" print(s) l = s.splitlines() for num in range(0, len(l)): one = l[num].replace(',', ' ').replace(';', ' ').split() onesum = 0 for i in range(0, len(one)): onesum = onesum + int(one[i]) print(l[num] + ":" + str(onesum))
输入输出:
请输入内容,输入空行回车结束输入:
1; 2 ,3↙
2 3; 4↙
10,20 30; 40↙
↙
1; 2 ,3
2 3; 4
10,20 30; 40
1; 2 ,3:6
2 3; 4:9
10,20 30; 40:100
2. 快乐数
编写一个算法来判断一个数 n
是不是快乐数。
「快乐数」定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果 可以变为 1,那么这个数就是快乐数。
如果 n
是快乐数就返回 true
;不是,则返回 false
。
示例 1:
输入:19
输出:true
解释:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
示例 2:
输入:n = 2
输出:false
提示:
1 <= n <= 2^31 - 1
出处:
https://edu.csdn.net/practice/25116232
代码:
pclass Solution(object): def isHappy(self, n): """ :type n: int :rtype: bool """ d = {} while True: l = list(map(int, list(str(n)))) m = 0 for i in l: m += i ** 2 if m in d: print(d) return False if m == 1: print(d) return True d[m] = m n = m #%% s = Solution() print(s.isHappy(19)) print(s.isHappy(2)) ython
输出:
{82: 82, 68: 68, 100: 100}
True
{4: 4, 16: 16, 37: 37, 58: 58, 89: 89, 145: 145, 42: 42, 20: 20}
False
3. 格雷编码
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。
给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。
格雷编码序列必须以 0 开头。
示例 1:
输入: 2
输出: [0,1,3,2]
解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 - 010 - 211 - 301 - 1
示例 2:
输入: 0
输出: [0]
解释: 我们定义格雷编码序列必须以 0 开头。给定编码总位数为 n 的格雷编码序列,其长度为 2n。当 n = 0 时,长度为 20 = 1。因此,当 n = 0 时,其格雷编码序列为 [0]。
出处:
https://edu.csdn.net/practice/25116233
代码:
class Solution(object): def grayCode(self, n): """ :type n: int :rtype: List[int] """ res = [0] for i in range(n): for j in reversed(range(len(res))): res.append(res[j] + (1 << i)) return res if __name__ == "__main__": s = Solution() print(s.grayCode(2)) print(s.grayCode(0))
输出:
[0, 1, 3, 2]
[0]
🌟 每日一练刷题专栏 🌟
✨持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页:https://hannyang.blog.csdn.net/