[LeetCode] 157. Read N Characters Given Read4

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

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

这道题目是http://blog.csdn.net/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一些,所以大家还是要会的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值