题目描述
输入一个字符串,请按长度为8,拆分每个输入字符串,并进行输出。长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。题源
输入描述
连续输入字符串。(每个字符串长度小于等于100)
输出描述
依次输出所有分割后的长度为8的新字符串。
示例
输入:abc
输出:abc00000
思路
法1常规思路先在长度不是8的倍数的字符串后边补0,然后每隔8个字符substr(i,8)输出打印并换行。
法2使用cout自带函数实现用width()函数控制输出宽度,用fill()函数填充0,用left调整左对齐输出,截取8个字符输出并换行。
具体实现
法1常规思路
#include<iostream>
using namespace std;
int main(){
string a;
int b,c;
while(cin>>a){
//补0
b=a.size();
if(b%8 != 0){
c=8-b%8;
for(int i=0; i<c; i++)
a.push_back('0');
}
//按格式输出
for(int i=0; i<a.size(); i=i+8)
cout<<a.substr(i,8)<<endl;
}
}
法2使用cout自带函数
#include<iostream>
using namespace std;
int main(){
string a;
int b;
while(cin>>a){
b=a.size();
for(int i=0; i<b; i+=8){
cout.width(8); //保证输出宽度是8
cout.fill('0'); //填充字符是0
cout<<left<<a.substr(i,8)<<endl; //8个8个的输出,注意left写法
}
}
}
时间复杂度
法1常规思路
-
时间复杂度:O(n),n为字符串长度。
-
空间复杂度:O(1)
法2cout自带函数
-
时间复杂度:O(n),n为字符串长度。
-
空间复杂度:O(1)
小结
C++中string常用函数:
-
put_back():在字符串尾部插入一个字符。
-
insert(pos,char):在指定的位置p前插入字符。
-
compare(a):字符串与a比较看是否相同,返回-1/0/1。
-
append(a):拼接字符串。或者直接用+=,即s2 += s3.c_str(),也可实现字符串拼接。
-
erase():字符串的删除,其中括号里可以用数组下标表示也可用迭代器表示,删除的范围。
-
string遍历用迭代器或下标。
-
replace(pos,n,char):字符替换。
-
tolower(char),toupper(char):大小写转换。
-
find(str,pos):表示从字符串的pos位置开始查找指定元素str,也可不填第二个参数,默认从开头查找。
-
substr(pos,len):表示提取从pos开始的len长度的字符串。pos默认为0。
cout常用函数总结
-
cout.put():专门输出字符,不可输出整型。
-
cout.width():可以控制输出字符域宽度,且不足用空格填充,默认右对齐。
-
cout.fill():改变填充的字符。
-
left:输出数据在本域宽范围内向左对齐。
-
right:输出数据在本域宽范围内向右对齐。
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 5 天,点击查看活动详情