当前位置: 首页 > news >正文

[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;
        }
    }
};

 

相关文章:

  • 4月数据库流行度排行榜 MySQL能否追上Oracle
  • 监控方案设计
  • 浅析:Android--Fragment的懒加载
  • iText生成pdf中文字体解决方案
  • c#xml操作
  • VC常用代码之创建进程
  • 第六章 对象作用域与servlet事件监听器
  • JavaScript HTML DOM 事件
  • 3D-HEVC的TAppDecorder
  • Hibenate second-level ehcache
  • JVM垃圾回收日志结构分析
  • MFC用户界面套包BCGControlBar Pro for MFC v24.3正式发布[附下载]
  • 线程的创建
  • Android EditText 多行,滚动条 等
  • C#中两个时间的比较
  • 【comparator, comparable】小总结
  • 【个人向】《HTTP图解》阅后小结
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2017 年终总结 —— 在路上
  • C++类中的特殊成员函数
  • ECMAScript6(0):ES6简明参考手册
  • egg(89)--egg之redis的发布和订阅
  • extjs4学习之配置
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JWT究竟是什么呢?
  • PhantomJS 安装
  • 创建一个Struts2项目maven 方式
  • 关于Java中分层中遇到的一些问题
  • 码农张的Bug人生 - 见面之礼
  • 如何用vue打造一个移动端音乐播放器
  • 深度学习中的信息论知识详解
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #LLM入门|Prompt#3.3_存储_Memory
  • #pragma multi_compile #pragma shader_feature
  • #QT项目实战(天气预报)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (排序详解之 堆排序)
  • (四)linux文件内容查看
  • (一)kafka实战——kafka源码编译启动
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (轉)JSON.stringify 语法实例讲解
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @Autowired 与@Resource的区别
  • @RequestParam详解
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [1127]图形打印 sdutOJ
  • [Avalon] Avalon中的Conditional Formatting.
  • [BUUCTF 2018]Online Tool(特详解)
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [C/C++]数据结构 堆的详解
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算