Problem
The API: int read4(char *buf) reads 4 characters at a time from a file.
The return value is the actual number of characters read. For example, it returns 3 if there is only 3 characters left in the file.
By using the read4 API, implement the function int read(char *buf, int n) that reads n characters from the file.
Note:
The read function may be called multiple times.
Example 1:
Given buf = "abc" read("abc", 1) // returns "a" read("abc", 2); // returns "bc" read("abc", 1); // returns ""
Example 2:
Given buf = "abc" read("abc", 4) // returns "abc" read("abc", 1); // returns ""Solution
public class Solution extends Reader4 { /** * @param buf Destination buffer * @param n Maximum number of characters to read * @return The number of characters read */ int count = 0; //count the length of data retrieved by read4() int index = 0; //record the position of data consumed by read() char[] data = new char[4]; public int read(char[] buf, int n) { int i = 0; while (i < n) { //get new data with read4 api if (index == 0) count = read4(data); //if no new data, break if (count == 0) break; //consume data while (i < n && index < count) { buf[i++] = data[index++]; } //all existing data consumed, restart with index = 0 if (index >= count) index = 0; } //return the length of data read return i; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/72348.html
摘要:题目链接和那道不同的是这次,问题就是当前的可能存在多读了几个字节,那么下一次的时候要先算上上次多读的部分,所以要保存上次读的。和读一次一样有两种要考虑的读完了没读完,但是装满了 158. Read N Characters Given Read4 II - Call multiple times 题目链接:https://leetcode.com/problems... 和那道read...
摘要:临时数组法复杂度时间空间思路用一个临时数组,存放每次读到字符,再用一个指针标记数组目前存储到的位置,然后将这个临时数组的内容存到相应的位置就行了。 Read N Characters Given Read4 I The API: int read4(char *buf) reads 4 characters at a time from a file. The return valu...
摘要:题目解答读懂题目很重要,还是要多写写这种实际的的问题。实际文件读到头了的情况需要读的文件个数达到了的情况 题目:The API: int read4(char *buf) reads 4 characters at a time from a file. The return value is the actual number of characters read. For exam...
摘要:一题目描述空格分隔,逐个反转二题目描述三题目描述当然也可以用的做,不过用双指针更快。 LeetCode: 557. Reverse Words in a String III 一、LeetCode: 557. Reverse Words in a String III 题目描述 Given a string, you need to reverse the order of chara...
摘要:代码先反转整个数组反转每个单词双指针交换法复杂度时间空间思路这题就是版的做法了,先反转整个数组,再对每个词反转。 Reverse Words in a String Given an input string, reverse the string word by word. For example, Given s = the sky is blue, return blue is...
阅读 2274·2019-08-30 15:44
阅读 1226·2019-08-30 13:01
阅读 3267·2019-08-30 11:22
阅读 3051·2019-08-29 15:23
阅读 1585·2019-08-29 12:22
阅读 3328·2019-08-26 13:58
阅读 3418·2019-08-26 12:17
阅读 3413·2019-08-26 12:16