[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 ,如需转载请自行联系原博主。

相关文章
|
7月前
|
IDE Java Shell
聊聊 print 的前世今生
聊聊 print 的前世今生
64 1
|
25天前
|
JavaScript 前端开发 Java
print_numbers_up_to 函数介绍
【10月更文挑战第20天】
50 12
|
7月前
|
C++
【PTA】​L1-023 输出GPLT ​ (C++)
【PTA】​L1-023 输出GPLT ​ (C++)
52 0
【PTA】​L1-023 输出GPLT ​ (C++)
Python print() 打印两个 list ,实现中间换行
Python print() 打印两个 list ,实现中间换行
Word打印
4.6 打印 4.6.1 分页符的插入及删除 1、插入水平分页符 选定要插入分页符位置的下一行,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择”插入分页符”命令 2、插入垂直分页符 选定要插入分页符位置的右侧列,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择”插入分页符”命令。 3、同时插入水平、垂直分页符 选定某单元格,在“页面布局”选项卡的“页面设置”组单击“分隔符”,在出现的下拉列表中选择“插入分页符”命令此时会在该单元格左边框和上边框位置同时插入水平、垂直分页符。 4、删除手动分页符 先选择紧邻水平分页符的下面行 (或该行
|
Python
一日一技:print函数也能写文件
一日一技:print函数也能写文件
153 0
print 方法输出
print 方法输出
128 0
print 方法输出
LeetCode contest 200 5476. 找出数组游戏的赢家 Find the Winner of an Array Game
LeetCode contest 200 5476. 找出数组游戏的赢家 Find the Winner of an Array Game
|
缓存 Java Go
自带的 print 函数居然会报错?(下)
最近用 Python 写了几个简单的脚本来处理一些数据,因为只是简单功能所以我就直接使用 print 来打印日志。