`

LeetCode 157 - Read N Characters Given Read4

 
阅读更多

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 will only be called once for each test case.

 

[分析]
每次只能读如4个字符,但是n不一定是n的整数倍。直接一个while循环,然后在里面判断读出来的buff长度是不是小于4。另外,文件的字符数可能少于n。所以需要有eof变量在循环体中做判断。

[注意事项]
1)最后一次读出来的buff长度有可能等于4,所以在while循环的判断条件中,需要加上 readBytes < n

public int read(char[] buf, int n) {
    char[] buffer = new char[4];
    int readBytes = 0;
    boolean eof = false;
    while (!eof && readBytes < n) {
        int sz = read4(buffer);
        if (sz < 4) eof = true;
        int bytes = Math.min(n - readBytes, sz); 
        System.arraycopy(buffer /*src*/, 0 /*srcPos*/, buf /*dest*/, readBytes /*destPos*/, bytes /*length*/);
        readBytes += bytes;
    }
    return readBytes;
}

 

分享到:
评论

相关推荐

    js-leetcode题解之157-read-n-characters-given-read4.js

    javascript js_leetcode题解之157-read-n-characters-given-read4.js

    python-leetcode题解之157-Read-N-Characters-Given-Read4.py

    python python_leetcode题解之157_Read_N_Characters_Given_Read4.py

    js-leetcode题解之158-read-n-characters-given-read4-ii-call

    javascript js_leetcode题解之158-read-n-characters-given-read4-ii-call

    LeetCode最全代码

    18| [4 Sum](https://leetcode.com/problems/4sum/) | [C++](./C++/4sum.cpp) [Python](./Python/4sum.py) | _O(n^3)_ | _O(1)_ | Medium || Two Pointers 26 | [Remove Duplicates from Sorted Array]...

    Leetcode book刷题必备

    15. Read N Characters Given Read4:一次调用 read4() 可以读取 4 个字符,编写一个函数,使其能够读取 n 个字符。 16. Read N Characters Given Read4 – Call Multiple Times:与上题类似,但是可能需要多次调用 ...

    oj题.zip

    6. **157.py** - 这可能是LeetCode的157题,"Read N Characters Given Read4",涉及I/O流处理和模拟读取操作。 7. **122.py** - 可能是LeetCode的122题,"Best Time to Buy and Sell Stock II"(买卖股票的最佳时机...

    常见算法题答案及解析

    16. Read N Characters Given Read4 – Call Multiple Times:多次调用Read4时如何处理字符读取。 二、数学 17. Reverse Integer:将一个整数中的数字反转。 18. Plus One:给定一个由数字组成的非负整数,将这个...

Global site tag (gtag.js) - Google Analytics