救救孩子的输入输出吧(牛客华为机试hj4)|刷题打卡

167 阅读1分钟

一、题目描述:

@Z8V57JXN@JN2FBC1.png

二、思路分析:

这种题要是只是讲思路估计也就是leetcode1,2题的水平 。但是输入输出总是要考虑很多

第一次的代码运行爆了内存,所以注意下不要用string的 +=

需要注意的是 for循环时,for(; i < s.size(); i++), i每次加加,知道不满足条件,也就是i==s.size() 的时候,平常编程的时候由于直接退出,所以很多人可能注意不到。

三、AC 代码:

#include<iostream>

using namespace std;

int main(){
    string s;
    
    while(getline(cin , s, '\n')){
        string tmp = "";
        int i =0;
        int j = i;
        for(; i < s.size();i++){
            if(i - j + 1 == 8)
            {
                printf("%s\n",s.substr(j , 8).c_str() );
//                 printf("j : %d \n", j);
                j = i + 1;
            }
        }
//         printf("%d : %d \n", i, j);
        if(j == i)continue;
        tmp = s.substr(j , i - j + 1);
        while( i  - j<= 7){
            i++;
            tmp += "0";
        }
        printf("%s\n",tmp.c_str());
        tmp = "";
        i = 0;
    }
    return 0;
}

四、总结:

这个 while(getline(cin , s, '\n'))也算是集异壁于大成了,基本把前几个文章的技巧都用上了

在可以看出来自己哪里错的情况下,出现了很多不值一提的小问题,改改就写出来了,可是要是不知道错的用例呢?

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情