LeetCode 157. 用 Read4 读取 N 个字符

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个文件,并且该文件只能通过给定的 read4 方法来读取,请实现一个方法使其能够读取 n 个字符。

read4 方法:

API read4 可以从文件中读取 4 个连续的字符,并且将它们写入缓存数组 buf 中。

返回值为实际读取的字符个数。

注意 read4() 自身拥有文件指针,很类似于 C 语言中的 FILE *fp 。

read4 的定义:
参数类型: char[] buf
返回类型: int
注意: buf[] 是目标缓存区不是源缓存区,read4 的返回结果将会复制到 buf[] 当中。
下列是一些使用 read4 的例子:
File file("abcdefghijk"); // 文件名为 "abcdefghijk", 初始文件指针 (fp) 指向 'a' 
char[] buf = new char[4]; // 创建一个缓存区使其能容纳足够的字符
read4(buf); // read4 返回 4。现在 buf = "abcd",fp 指向 'e'
read4(buf); // read4 返回 4。现在 buf = "efgh",fp 指向 'i'
read4(buf); // read4 返回 3。现在 buf = "ijk",fp 指向文件末尾read 方法:
通过使用 read4 方法,实现 read 方法。
该方法可以从文件中读取 n 个字符并将其存储到缓存数组 buf 中。您 不能 直接操作文件。
返回值为实际读取的字符。
read 的定义:
参数类型:   char[] buf, int n
返回类型:   int
注意: buf[] 是目标缓存区不是源缓存区,你需要将结果写入 buf[] 中。示例 1:
输入: file = "abc", n = 4
输出: 3
解释: 当执行你的 rand 方法后,buf 需要包含 "abc"。文件一共 3 个字符,因此返回 3。 注意 "abc" 是文件的内容,不是 buf 的内容,buf 是你需要写入结果的目标缓存区。 示例 2:
输入: file = "abcde", n = 5
输出: 5
解释: 当执行你的 rand 方法后,buf 需要包含 "abcde"。
文件共 5 个字符,因此返回 5。示例 3:
输入: file = "abcdABCD1234", n = 12
输出: 12
解释: 当执行你的 rand 方法后,buf 需要包含 "abcdABCD1234"。
文件一共 12 个字符,因此返回 12。示例 4:
输入: file = "leetcode", n = 5
输出: 5
解释: 当执行你的 rand 方法后,buf 需要包含 "leetc"。
文件中一共 5 个字符,因此返回 5。注意:
你 不能 直接操作该文件,文件只能通过 read4 获取而 不能 通过 read。
read  函数只在每个测试用例调用一次。
你可以假定目标缓存数组 buf 保证有足够的空间存下 n 个字符。 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/read-n-characters-given-read4
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 类似题目:LeetCode 158. 用 Read4 读取 N 个字符 II
/*** The read4 API is defined in the parent class Reader4.*     int read4(char *buf);*/class Solution {
public:/*** @param buf Destination buffer* @param n   Number of characters to read* @return    The number of actual characters read*/int read(char *buf, int n) {if(!buf || n <= 0)return 0;int count = 0, len = 0;do{len = read4(buf+count);//读取了len个有效字符count += len;//总计数}while(len==4 && count < n);//还可以再读取if(count > n)//读取个数超过n个{buf[n] = '\0';//buf偏移n个的位置,为结束标志count = n;//最多n个}return count;}
};

长按或扫码关注我的公众号,一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

北京印象

由于出差的缘故&#xff0c;在北京短暂的停留了四天。出了北京南站打车到了东单&#xff0c;待了几天才发现能小憩在东单真是挺爽的事情。 出了火车就有点咳嗽&#xff0c;不知道是不是空气太干的原因。与正值雨季的杭州不同&#xff0c;北京一直天气晴朗&#xff0c;不然去办…

LeetCode 716. 最大栈(双栈 / list+map)

文章目录1. 题目2. 解题2.1 双栈解法2.2 listmap1. 题目 设计一个最大栈&#xff0c;支持 push、pop、top、peekMax 和 popMax 操作。 push(x) -- 将元素 x 压入栈中。 pop() -- 移除栈顶元素并返回这个值。 top() -- 返回栈顶元素。 peekMax() -- 返回栈中最大元素。 popMax…

linux python命令无反应_Python学习第164课--Linux命令行特殊符号的意义及命令的语法规则...

【每天几分钟&#xff0c;从零入门python编程的世界&#xff01;】这节我们介绍Linux系统命令行中的一些特定的符号具有什么含义&#xff0c;以及命令行的语法规则。●Linux命令行中特定的符号的含义比如我登录到系统中之后&#xff0c;会显示[xiaozhilocalhost~]$这一行符号&a…

Lucene3.5自学4--建索引相关知识总结

Lucene简单介绍&#xff08;该部分摘自网络&#xff09; Lucene是一个高效的&#xff0c;基于Java的全文检索库。 所以在了解Lucene之前要费一番工夫了解一下全文检索。 那么什么叫做全文检索呢&#xff1f;这要从我们生活中的数据说起。 我们生活中的数据总体分为两种&#xf…

LeetCode 734. 句子相似性(哈希)

文章目录1. 题目2. 解题1. 题目 给定两个句子 words1, words2 &#xff08;每个用字符串数组表示&#xff09;&#xff0c;和一个相似单词对的列表 pairs &#xff0c;判断是否两个句子是相似的。 例如&#xff0c;当相似单词对是 pairs [["great", "fine&qu…

LeetCode 758. 字符串中的加粗单词(Trie树)

文章目录1. 题目2. 解题1. 题目 给定一个关键词集合 words 和一个字符串 S&#xff0c;将所有 S 中出现的关键词加粗。所有在标签 <b> 和 </b> 中的字母都会加粗。 返回的字符串需要使用尽可能少的标签&#xff0c;当然标签应形成有效的组合。 例如&#xff0c;…

博客园配置windows live writer,实现本地代码高亮

你是否还在为只能用浏览器在博客后台写文章而苦恼&#xff1f; 你是否还在纠结于live writer没有代码高亮而苦恼&#xff1f; 现在一切都能解决&#xff1a; 其实博客园支持SyntaxHighlighter代码着色&#xff0c;可以用相应的Live Writer代码着色插件进行代码着色。他们推荐的…

LeetCode 246. 中心对称数(哈希)

文章目录1. 题目2. 解题1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字&#xff08;或者上下颠倒地看&#xff09;。 请写一个函数来判断该数字是否是中心对称数&#xff0c;其输入将会以一个字符串的形式来表达数字。 示例 1: 输入: "69&qu…

LeetCode 276. 栅栏涂色(DP)

文章目录1. 题目2. 解题2.1 DP超时解2.2 DP解1. 题目 有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏&#xff0c;每个栅栏柱可以用其中一种颜色进行上色。 你需要给所有栅栏柱上色&#xff0c;并且保证其中相邻的栅栏柱 最多连续两个 颜色相同。然后&#xff0c;返回所有有效…

LeetCode 1176. 健身计划评估(滑动窗口)

文章目录1. 题目2. 解题1. 题目 你的好友是一位健身爱好者。前段日子&#xff0c;他给自己制定了一份健身计划。现在想请你帮他评估一下这份计划是否合理。 他会有一份计划消耗的卡路里表&#xff0c;其中 calories[i] 给出了你的这位好友在第 i 天需要消耗的卡路里总量。 为…

为什么苹果不再需要谷歌地图?

苹果和谷歌之间的专利大战正是如火如荼&#xff0c;在这种两军对垒的时候&#xff0c;iOS设备上的那个明晃晃的谷歌地图图标就像眼中钉肉中刺一样让苹果始终不得安宁&#xff0c;让对手的核心服务扎根到自己的核心平台中&#xff0c;这感觉肯定不好。在最新版本的iPhoto中&…

LeetCode 422. 有效的单词方块

文章目录1. 题目2. 解题1. 题目 给你一个单词序列&#xff0c;判断其是否形成了一个有效的单词方块。 有效的单词方块是指此由单词序列组成的文字方块的 第 k 行 和 第 k 列 (0 ≤ k < max(行数, 列数)) 所显示的字符串完全相同。 注意&#xff1a; 给定的单词数大于等于…

SVG-不是图片的图片

SVG-不是图片的图片 导语&#xff1a; 可缩放矢量图形&#xff08;Scalable Vector Graphics&#xff0c;SVG&#xff09;是基于可扩展标记语言&#xff08;XML&#xff09;&#xff0c;用于描述二维矢量图形的一种图形格式。SVG由W3C制定&#xff0c;是一个开放标准。另SVG还是…

LeetCode 1490. 克隆 N 叉树(DFS/BFS)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 给定一棵 N 叉树的根节点 root &#xff0c;返回该树的深拷贝&#xff08;克隆&#xff09;。 N 叉树的每个节点都包含一个值&#xff08; int &#xff09;和子节点的列表&#xff08; List[Node] &#xff09;。 class Node …

奇数阶幻方 java_N(奇数)阶幻方-java实现代码

看完最强大脑&#xff0c;有一期是说N阶幻立方的&#xff0c;作为一个程序员&#xff0c;我的第一反应时我可以用程序实现&#xff0c;在此公布N(奇数)阶幻方的java实现代码&#xff1a;package com.lzugis.test;public class Practice {public static int[][] magicOdd(int n)…

LeetCode 1265. 逆序打印不可变链表(递归)

文章目录1. 题目2. 解题1. 题目 给您一个不可变的链表&#xff0c;使用下列接口逆序打印每个节点的值&#xff1a; ImmutableListNode: 描述不可变链表的接口&#xff0c;链表的头节点已给出。 您需要使用以下函数来访问此链表&#xff08;您 不能 直接访问 ImmutableListNo…

LeetCode 408. 有效单词缩写

文章目录1. 题目2. 解题1. 题目 给一个 非空 字符串 s 和一个单词缩写 abbr &#xff0c;判断这个缩写是否可以是给定单词的缩写。 字符串 “word” 的所有有效缩写为&#xff1a; ["word", "1ord", "w1rd", "wo1d", "wor1&qu…

LeetCode 604. 迭代压缩字符串

文章目录1. 题目2. 解题1. 题目 对于一个压缩字符串&#xff0c;设计一个数据结构&#xff0c;它支持如下两种操作&#xff1a; next 和 hasNext。 给定的压缩字符串格式为&#xff1a;每个字母后面紧跟一个正整数&#xff0c;这个整数表示该字母在解压后的字符串里连续出现的…

LeetCode 1056. 易混淆数(哈希)

文章目录1. 题目2. 解题1. 题目 给定一个数字 N&#xff0c;当它满足以下条件的时候返回 true&#xff1a; 原数字旋转 180 以后可以得到新的数字。 如 0, 1, 6, 8, 9 旋转 180 以后&#xff0c;得到了新的数字 0, 1, 9, 8, 6 。 2, 3, 4, 5, 7 旋转 180 后&#xff0c;得到…

LeetCode 624. 数组列表中的最大距离

文章目录1. 题目2. 解题2.1 暴力超时2.2 优化1. 题目 给定 m 个数组&#xff0c;每个数组都已经按照升序排好序了。 现在你需要从两个不同的数组中选择两个整数&#xff08;每个数组选一个&#xff09;并且计算它们的距离。 两个整数 a 和 b 之间的距离定义为它们差的绝对值 |…