算法练习Day8

98 阅读1分钟

题目描述

•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;

•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

题目来源

题目来源

输入描述

连续输入字符串(每个字符串长度小于等于100)

输出描述:

依次输出所有分割后的长度为8的新字符串

输入:
abc
复制
输出:
abc00000

思路

这道题我用笨办法将字符数组长度取余小于8就循环补0

然后分段输出

具体实现

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
​
int main() {
    char c[100];
    string q = "0";
    char* l = &q[0] ;
    cin >> c;
    if (c == "") return 0;
    int i = strlen(c);
    int j = i % 8;
    if (j != 0) {
        for (int k = 0; k < (8 - j); k++) {
            strcat(c, l);
        }
        i = i + 8 - j;
​
    }
    int m = 0;
    for (int n = 0; n < i / 8; n++) {
        int p = 0;
        while (p < 8) {
            printf("%c", c[m++]);
            p++;
        }
        printf("\n");
    }
    return 0;
}

时间复杂

双循环有一层为常数级,所以为O(n)

小结

这道题我看其他人用cout写出来的十分简洁,需要好好研究一下,进行进一步学习