首页 > 代码库 > leetcode[157] Read N Characters Given Read4

leetcode[157] Read N Characters Given Read4

题目意思是给你一个read4的函数,实现一个readn的函数。

一开始题目一直没搞懂,原来,read4(buf) 是指,读4个字符存到buf,或者读剩下的不足四个的字符,返回的数字是存到buf里的字符数。

没有买书,只能网上看看别人分享的代码:

// 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 buffer[5];        int cnt = 0;        while (cnt < n) {            int sz = read4(buffer);            memcpy(buf + cnt, buffer, sz);            cnt += sz;            if (sz < 4) break;        }        if (cnt > n) {            buf[n] = \0;            cnt = n;        }        return cnt;    }};

需要注意的是,跳出while后,需要判断读的数字是不是超过n了,因为我们只实现readn,要返回的数字最多就是n,存到buf里的也最多是n个字符。

所以如果cnt大于n了,那么buf里面就要将buf[n]设置为末尾也就是‘\0’

 

leetcode[157] Read N Characters Given Read4