No.157 Read 用 Read4 读取 N 个字符

题目

  • 给你一个文件,并且该文件只能通过给定的 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[] 中。

示例

  • 输入: file = "abc", n = 4
  • 输出: 3
  • 解释: 当执行你的 read 方法后,buf 需要包含 "abc"。 文件一共 3 个字符,因此返回 3。
  • 注意 "abc" 是文件的内容,不是 buf 的内容,buf 是你需要写入结果的目标缓存区。

  • 输入: file = "abcde", n = 5
  • 输出: 5
  • 解释: 当执行你的 read 方法后,buf 需要包含 "abcde"。文件共 5 个字符,因此返回 5。

  • 输入: file = "abcdABCD1234", n = 12
  • 输出: 12
  • 解释: 当执行你的 read 方法后,buf 需要包含 "abcdABCD1234"。文件一共 12 个字符,因此返回 12。

  • 输入: file = "leetcode", n = 5
  • 输出: 5
  • 解释: 当执行你的 read 方法后,buf 需要包含 "leetc"。文件中一共 5 个字符,因此返回 5。

代码

No.158 Read 用 Read4 读取 N 个字符 II

题目

  • 给你一个文件,并且该文件只能通过给定的 read4 方法来读取,请实现一个方法使其能够读取 n 个字符。
  • 注意:你的 read 方法可能会被调用多次。
  • read4 和 read 的定义与No.157一致。

示例

  • File file("abc");
  • Solution sol;
  • // 假定 buf 已经被分配了内存,并且有足够的空间来存储文件中的所有字符。
  • sol.read(buf, 1); // 当调用了您的 read 方法后,buf 需要包含 "a"。 一共读取 1 个字符,因此返回 1。
  • sol.read(buf, 2); // 现在 buf 需要包含 "bc"。一共读取 2 个字符,因此返回 2。
  • sol.read(buf, 1); // 由于已经到达了文件末尾,没有更多的字符可以读取,因此返回 0。

  • File file("abc");
  • Solution sol;
  • sol.read(buf, 4); // 当调用了您的 read 方法后,buf 需要包含 "abc"。 一共只能读取 3 个字符,因此返回 3。
  • sol.read(buf, 1); // 由于已经到达了文件末尾,没有更多的字符可以读取,因此返回 0。

注意

你不能直接操作该文件,文件只能通过 read4 获取而 不能 通过 read。

read 函数可以被调用 多次。

你可以假定目标缓存数组 buf 保证有足够的空间存下 n 个字符。

保证在一个给定测试用例中,read 函数使用的是同一个 buf。

思路

代码

No.159 LengthOfLongestSubstringTwoDistinct 至多包含两个不同字符的最长子串

题目

  • 给定一个字符串 s ,找出至多包含两个不同字符的最长子串 t 。

示例

  • 输入: "eceba"
  • 输出: 3
  • 解释: t 是 "ece",长度为3。

  • 输入: "ccaabbb"
  • 输出: 5
  • 解释: t 是 "aabbb",长度为5。

思路

代码

LeetCode No.157,158,159的更多相关文章

  1. 【LeetCode】157. Read N Characters Given Read4

    Difficulty: Easy  More:[目录]LeetCode Java实现 Description The API: int read4(char *buf) reads 4 charact ...

  2. 【LeetCode】157. Read N Characters Given Read4 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 直接调用 日期 题目地址:https://leetco ...

  3. leetcode第157场周赛5213

    当时居然没想到,我真菜,就当记录一下了. 思路分析: 分为两种: 第一种:走两步的,无论是奇或偶的位置,只要走两步,代价为0: 第二种:走一步的,就是偶数到奇数,或者奇数到偶数,代价为1: 那么实际上 ...

  4. LeetCode题目解答

    LeetCode题目解答——Easy部分 Posted on 2014 年 11 月 3 日 by 四火 [Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复 ...

  5. C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告

    剑指offer 重建二叉树 提交网址: http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tq ...

  6. 在C语言中利用PCRE实现正则表达式

    1. PCRE简介 2. 正则表达式定义 3. PCRE正则表达式的定义 4. PCRE的函数简介 5. 使用PCRE在C语言中实现正则表达式的解析 6. PCRE函数在C语言中的使用小例子 1. P ...

  7. Java的修饰符

    转自:http://blog.csdn.net/manyizilin/article/details/51926230#L42 修饰符: 像其他语言一样,Java可以使用修饰符来修饰类中方法和属性.主 ...

  8. Python_查询手机供应商

    def Seach_Phone_Nmuber_operator(): CN_mobile = [134,135,136,137,138,139,150,151,152,157,158,159,182, ...

  9. php 生成word的三种方式

    原文地址 http://www.jb51.net/article/97253.htm 最近工作遇到关于生成word的问题 现在总结一下生成word的三种方法. btw:好像只要是标题带PHP的貌似点击 ...

随机推荐

  1. PHP ~ 设置和读取 Cookie

    一,设置 Cookie setcookie("user",$user,time()+3600);     // user 为用户名,$user 为变量的值   二,读取 Cooki ...

  2. poj 3693 Maximum repetition substring

    呵呵呵呵呵呵呵呵呵呵,sb(神犇)题看了一天,还是不懂 题目要求的是最多重复的,那么就来找重复的,可以先枚举一个重复的单元(比如ababab,就枚举ab)的长度, 然后再原串中,会有ch[0],ch[ ...

  3. java课程课后作业190502之单词统计续集

    第1步:输出单个文件中的前 N 个最常出现的英语单词. 功能1:输出文件中所有不重复的单词,按照出现次数由多到少排列,出现次数同样多的,以字典序排列. 功能2: 指定文件目录,对目录下每一个文件执行统 ...

  4. 如何把控好Essay写作结构

    留学生在国内写过作文,但是对于essay写作到底了解多少呢?大家觉得essay写作太难是语言问题,但是大家要明白,老师对于内容的考察远重于对语言的考察.同学们的essay写作如果能做到言之有理,自圆其 ...

  5. Day 1:线程与进程系列问题(一)

    一.进程与线程 进程:正在执行的程序称为一个线程,主要负责内存空间的划分. 线程:线程在一个进程中负责代码的执行,就是进程中的一个执行路径. 多线程:在一个进程中有多个线程同时在执行不同的任务(同时指 ...

  6. 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题

      5种基本数据类型 可以直接对值操作 判断引用类型 var result = instanceof Array 执行环境 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这 ...

  7. continue break

    #!/bin/bashfor i in `seq 10`do    if ((i%3==0))    thenecho !!        continue    fiecho $idone 结果: ...

  8. 《C Primer Plus》- 第二章 C语言概述

    本笔记写于2020年1月27日. 本系列文章参考的是<C Primer Plus>(第六版),其中里面会有笔者自己的相关补充. 以下示例均运行于macOS Catalina 10.15.2 ...

  9. 最短路问题--P4779 单源最短路(标准版)Dijkstra堆优化

    题目背景 2018 年7月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路. 最终,他因此没能与理想的大学达成契约. 小 F 衷心祝愿大家不再重 ...

  10. vue简单逻辑判断

    条件判断能否显示 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...