Day28 2023/03/29
难度:简单
题目
输入一个字符串,请按长度为8拆分每个输入字符串并进行输出: 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 。
输入描述: 连续输入字符串(每个字符串长度小于等于100)
输出描述: 依次输出所有分割后的长度为8的新字符串
示例
输入:abc
输出:abc00000
思路
本题较为简单,直接给出具体的算法思想:
- 持续读入字符串,直到结束。
- 对于每个字符串,按长度为8分割,如果长度不足8,则在后面补0。
- 输出所有分割后的长度为8的新字符串。
关键点
- substr(起始位置, n),分割字符串的方法,从起始位置开始取得长度为n的字符串。
算法实现
c++代码实现-分割字符串
#include <iostream>
#include <string>
using namespace std;
int main() {
string str; // 定义字符串输入变量
int i = 0; // 表示当前子串的起始下标
// 输入字符串,并判断是否有子串未处理
while (getline(cin, str) && i < str.size()) {
if (str.size() - i >= 8) { // 如果剩余字符串长度大于等于8
cout << str.substr(i, 8) << endl;
} else { // 如果剩余字符串长度小于8
cout << str.substr(i, str.size() - i);
for (int j = 0; j < 8 - str.size() - i; j++) {
cout << '0';
}
}
i += 8; // 跳过已处理的字符串
}
return 0;
}
- 时间复杂度 --- 遍历一次字符串,其中n为字符串长度
- 空间复杂度 ---仅常数级空间
总结
题目较为简单,巩固大家之前所学!!!