[CareerCup] 13.1 Print Last K Lines 打印最后K行

简介:

13.1 Write a method to print the last K lines of an input file using C++.

这道题让我们用C++来打印一个输入文本的最后K行,最直接的方法是先读入所有的数据,统计文本的总行数,然后再遍历一遍打印出最后K行。这个方法需要读两遍文件,我们想使用一种更简便的方法,只需要读取一遍文本就可以打印出最后K行,这里我们使用一个循环数组Circular Array,原理是我们维护一个大小为K的字符串数组,当数组存满后,新进来的数据从开头开始存,覆盖原有的数据。这样当我们读完整个文本,最后K行就保存在了这个大小为K的字符串数组,只不过顺序不相同,我们始终要有个变量来记录最后一个进来的数据的位置,这样我们就可以按原文本的顺序打印出最后K行了,参见代码如下:

class Solution {
public:
    void printLast5Lines(char *fileName) {
        const int K = 5;
        ifstream file(fileName);
        string L[K];
        int size = 0;
        while (file.good()) {
            getline(file, L[size % K]);
            ++size;
        }
        int start = size > K ? (size % K) : 0;
        int cnt = min(K, size);
        for (int i = 0; i < cnt; ++i) {
            cout << L[(start + i) % K] << endl;
        }
    }
};

本文转自博客园Grandyang的博客,原文链接:打印最后K行[CareerCup] 13.1 Print Last K Lines ,如需转载请自行联系原博主。

相关文章
|
2月前
|
IDE Java Shell
聊聊 print 的前世今生
聊聊 print 的前世今生
24 1
|
2月前
|
C++
【PTA】​L1-023 输出GPLT ​ (C++)
【PTA】​L1-023 输出GPLT ​ (C++)
23 0
【PTA】​L1-023 输出GPLT ​ (C++)
Word打印
4.6 打印 4.6.1 分页符的插入及删除 1、插入水平分页符 选定要插入分页符位置的下一行,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择”插入分页符”命令 2、插入垂直分页符 选定要插入分页符位置的右侧列,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择”插入分页符”命令。 3、同时插入水平、垂直分页符 选定某单元格,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择“插入分页符”命令此时会在该单元格左边框和上边框位置同时插入水平、垂直分页符。 4、删除手动分页符 先选择紧邻水平分页符的下面行 (或该行
Python print() 打印两个 list ,实现中间换行
Python print() 打印两个 list ,实现中间换行
print 方法输出
print 方法输出
106 0
print 方法输出
HDOJ/HDU 1321 Reverse Text(倒序输出~)
HDOJ/HDU 1321 Reverse Text(倒序输出~)
77 0
HDOJ 1266 Reverse Number(数字反向输出题)
HDOJ 1266 Reverse Number(数字反向输出题)
87 0