资讯专栏INFORMATION COLUMN

157. Read N Characters Given Read4

crossoverJie / 2209人阅读

摘要:题目解答读懂题目很重要,还是要多写写这种实际的的问题。实际文件读到头了的情况需要读的文件个数达到了的情况

题目:
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.

解答:
读懂题目很重要,还是要多写写这种实际的api的问题。

/* The read4 API is defined in the parent class Reader4.
      int read4(char[] buf); */

public class Solution extends Reader4 {
    /**
     * @param buf Destination buffer
     * @param n   Maximum number of characters to read
     * @return    The number of characters read
     */
    public int read(char[] buf, int n) {
        boolean end = false;
        int total = 0;
        char[] temp = new char[4];
        //有两种情况:1. 需要read的character个数是n,但实际文件中character个数小于n个,所以我们只能返回实际character的个数;2. 需要read的character个数n小于实际文件中的个数,所以最后一步只需要n - total个character就可以。
        while (!end && total < n) {
            int count = read4(temp);
            //实际文件读到头了的情况
            end = count < 4;
            //需要读的文件个数达到了的情况
            count = Math.min(count, n - total);
            for (int i = 0; i < count; i++) {
                buf[total++] = temp[i];
            }
        }
        return total;
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64912.html

相关文章

  • 158. Read N Characters Given Read4 II - Call multi

    摘要:题目链接和那道不同的是这次,问题就是当前的可能存在多读了几个字节,那么下一次的时候要先算上上次多读的部分,所以要保存上次读的。和读一次一样有两种要考虑的读完了没读完,但是装满了 158. Read N Characters Given Read4 II - Call multiple times 题目链接:https://leetcode.com/problems... 和那道read...

    SillyMonkey 评论0 收藏0
  • [Leetcode] Read N Characters Given Read4 用Read4 AP

    摘要:临时数组法复杂度时间空间思路用一个临时数组,存放每次读到字符,再用一个指针标记数组目前存储到的位置,然后将这个临时数组的内容存到相应的位置就行了。 Read N Characters Given Read4 I The API: int read4(char *buf) reads 4 characters at a time from a file. The return valu...

    wayneli 评论0 收藏0
  • [LeetCode] 158. Read N Characters Given Read4 II -

    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 i...

    周国辉 评论0 收藏0
  • 翻转字符串的相关题目

    摘要:一题目描述空格分隔,逐个反转二题目描述三题目描述当然也可以用的做,不过用双指针更快。 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...

    lykops 评论0 收藏0
  • [Leetcode] Isomorphic Strings 同构字符串

    摘要:最新更新思路和其他语言请访问哈希表法复杂度时间空间思路用一个哈希表记录字符串中字母到字符串中字母的映射关系,一个集合记录已经映射过的字母。或者用两个哈希表记录双向的映射关系。这里不能只用一个哈希表,因为要排除这种多对一的映射。 Isomorphic Strings 最新更新思路和其他语言请访问:https://yanjia.me/zh/2018/11/... Given two st...

    antz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<