[LeetCode] 157. Read N Characters Given Read4

本文介绍了一道LeetCode上的编程题,该题要求利用提供的read4函数实现读取指定数量字符的功能。文章详细解释了解题思路,并给出具体代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题链接:https://leetcode.com/problems/read-n-characters-given-read4/

这也是一道带锁题,题目的意思是给定一个函数read4(char[] buf) 的函数,每次可以最多读4个字节的字符,然后要求通过给定的函数来实现一个函数,能按照要求读出n个字符。

这道题目是http://blog.youkuaiyun.com/foolnote/article/details/50626162的简化版,因为题目说目标函数只会被调用一次,这就大大简化了题目难度。所以我们的思路就很简单,在函数体里循环调用read4()函数。直到读出我们想要的字符数为止。这里要注意一下,有可能在我们读足要想的字符数之前,read4()函数就已经扫到文件尾部位置了。代码如下:

public int read(char[] buf, int n) {
        if(n == 0)
            return 0;
        int read = 0;
        char[] buffer4 = new char[4];
        while(true)
        {
            int r = read4(buffer4);
            for(int i = 0;i<r && read<n;i++)
            {
                buf[read++]= buffer4[i];
            }
            if(r != 4)
                break;
        }
        return read;
    }

 这道题主要考察我们对已知API的调用,但面试更可能会考158一些,所以大家还是要会的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值