博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 157,158. Read N Characters Given Read4 I+II
阅读量:6543 次
发布时间:2019-06-24

本文共 1263 字,大约阅读时间需要 4 分钟。

Read N Characters Given Read4

这个题目和C里面读文件很像。

read4每次只能读四个字符,把字符放到buf里,返回值是实际读到的字符数。

而我们要做的是用read4实现一个能够读n个字符的函数 read,同样,读到的字符放到buf里。

if (count==0) break; 是处理文件长度比n小的情况。

// Forward declaration of the read4 API.int read4(char *buf);class Solution {public:    /**     * @param buf Destination buffer     * @param n   Maximum number of characters to read     * @return    The number of characters read     */    int read(char *buf, int n) {        char* tmp=new char[4];        int len=0;        while (len

当然,由于C++指针的缘故,也可以直接read4放到 buf+index 的位置。

 

Read N Characters Given Read4 II - Call multiple times

上一题的followup,其中与上一题有很大的区别。

由于需要多次read,下一次read是紧接在之前读完的字符之后的。这里有一个问题,如果之前read4的字符读多了怎么办?

因此,我们需要一个cache,暂存read4的内容。如果有剩下的,下一次读的时候先把剩下的读了,如果还不够再call read4。

// Forward declaration of the read4 API.int read4(char *buf);class Solution {public:    /**     * @param buf Destination buffer     * @param n   Maximum number of characters to read     * @return    The number of characters read     */    char *cache=new char[4];    int index=0; // points to the first remaining char    int count=0; // valid number of characters in cache        int read(char *buf, int n) {        int len=0;        while (len

 

 

References:

转载于:https://www.cnblogs.com/hankunyan/p/9945846.html

你可能感兴趣的文章
LeetCode (11): Container With Most Water
查看>>
【技巧】easyUI的datagrid,如何在翻页以后仍能记录被选中的行
查看>>
经过强制类型转换以后,变量a, b的值分别为( )short a = 128; byte b = (byte) a;
查看>>
ubuntu下msmtp+mutt的安装和配置
查看>>
spring中注解说明
查看>>
QLabel显示图片,图片可以自适应label的大小
查看>>
阅读下面程序,请回答如下问题:
查看>>
BZOJ3994:[SDOI2015]约数个数和——题解
查看>>
3、EJB3.0开发第一个无会话Bean和客户端(jboss4.2.3)
查看>>
git fetch & pull详解
查看>>
优酷2013.3去广告 不黑屏
查看>>
web入门、tomcat、servlet、jsp
查看>>
boost_1.63.0编译VS2013
查看>>
mysql查看每个数据库所占磁盘大小
查看>>
Android深度探索第三章
查看>>
jQuery 插件-(初体验一)
查看>>
PHP语言 -- Ajax 登录处理
查看>>
基于js的CC攻击实现与防御
查看>>
Largest Rectangle in a Histogram
查看>>
树状数组模板
查看>>