明文分组(HJ3)

明文分组

题目描述

https://www.nowcoder.com/share/jump/5832603751775720083470

输入一个字符串,将字符串按每 8 个字符进行分组。不足 8 个字符的组则在后面补 0,每组单独输出一行。

示例

输入:

abc
输出:
abc00000

输入:

1234567890
输出:
12345678
90

解题思路

字符串填充 + 分组截取

  1. 计算需要补 0 后的长度:向上取整到 8 的倍数
  2. 使用 ljust() 右侧填充 ‘0’
  3. 按 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/
作者
Ming
发布于
2026年4月9日
更新于
2026年4月9日
许可协议