明文分组(HJ3)
明文分组
题目描述
https://www.nowcoder.com/share/jump/5832603751775720083470
输入一个字符串,将字符串按每 8 个字符进行分组。不足 8 个字符的组则在后面补 0,每组单独输出一行。
示例
输入:
abcabc00000输入:
123456789012345678
90解题思路
字符串填充 + 分组截取
- 计算需要补 0 后的长度:向上取整到 8 的倍数
- 使用
ljust()右侧填充 ‘0’ - 按 8 个字符一组截取输出
代码实现
s = input().strip()
n = len(s)
k = 8
# 计算补0后的长度(向上取整到8的倍数)
new_len = (n + k - 1) // k * k
# 右侧填充'0'
s = s.ljust(new_len, '0')
# 每8个字符一组输出
for i in range(0, new_len, k):
print(s[i: i + k])代码解析
(n + k - 1) // k * k
- 向上取整到 k 的倍数
| n | k | (n + k - 1) // k * k |
|---|---|---|
| 3 | 8 | 8 |
| 9 | 8 | 16 |
| 16 | 8 | 16 |
等价于 math.ceil(n / k) * k,但无需导入 math 模块。
ljust(new_len, '0') -
右侧填充
"abc".ljust(8, '0') # → "abc00000"s[i: i + k] - 分组截取
s = "1234567890000000"
i = 0: s[0:8] # "12345678"
i = 8: s[8:16] # "90000000"时间复杂度
- O(n) - 单次遍历填充和分组
空间复杂度
- O(n) - 存储填充后的字符串
明文分组(HJ3)
https://mingsm17518.github.io/2026/04/09/algorithm/华为机考/nowcoder/String/03_string_group/