LeetCode No.157,158,159
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的更多相关文章
- 【LeetCode】157. Read N Characters Given Read4
Difficulty: Easy More:[目录]LeetCode Java实现 Description The API: int read4(char *buf) reads 4 charact ...
- 【LeetCode】157. Read N Characters Given Read4 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 直接调用 日期 题目地址:https://leetco ...
- leetcode第157场周赛5213
当时居然没想到,我真菜,就当记录一下了. 思路分析: 分为两种: 第一种:走两步的,无论是奇或偶的位置,只要走两步,代价为0: 第二种:走一步的,就是偶数到奇数,或者奇数到偶数,代价为1: 那么实际上 ...
- LeetCode题目解答
LeetCode题目解答——Easy部分 Posted on 2014 年 11 月 3 日 by 四火 [Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复 ...
- C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告
剑指offer 重建二叉树 提交网址: http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tq ...
- 在C语言中利用PCRE实现正则表达式
1. PCRE简介 2. 正则表达式定义 3. PCRE正则表达式的定义 4. PCRE的函数简介 5. 使用PCRE在C语言中实现正则表达式的解析 6. PCRE函数在C语言中的使用小例子 1. P ...
- Java的修饰符
转自:http://blog.csdn.net/manyizilin/article/details/51926230#L42 修饰符: 像其他语言一样,Java可以使用修饰符来修饰类中方法和属性.主 ...
- Python_查询手机供应商
def Seach_Phone_Nmuber_operator(): CN_mobile = [134,135,136,137,138,139,150,151,152,157,158,159,182, ...
- php 生成word的三种方式
原文地址 http://www.jb51.net/article/97253.htm 最近工作遇到关于生成word的问题 现在总结一下生成word的三种方法. btw:好像只要是标题带PHP的貌似点击 ...
随机推荐
- 面试官,不要再问我“Java虚拟机类加载机制”了(转载)
关于Java虚拟机类加载机制往往有两方面的 面试题:根据程序判断输出结果和讲讲虚拟机类加载机制的流程.其实这两类题本质上都是考察面试者对Java虚拟机类加载机制的了解. 面试题试水 现在有这样一道判断 ...
- pip2 install protobuf==2.6.1
[libprotobuf FATAL google/protobuf/stubs/common.cc:61] This program requires version 3.5.0 of the Pr ...
- SQL约束攻击
本文转载自https://blog.csdn.net/kkr3584/article/details/69223010 目前值得高兴的是,开发者在建立网站时,已经开始关注安全问题了--几乎每个开发者都 ...
- git修改已经push的commit message
git中修改上一次提交的commit的message git commit --amend -m "你的新的注释" git push -f 多个commit https://www ...
- MySQL表连接原理
以下文章均来自掘金小测: https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c061b0cf265da612577e0f4 表连接本质: ...
- 实验4&5
[实验任务四]: 在上网时,我们经常会看到以下这种对话框,要用户输入一个验证码. 1.程序设计思想 先利用Math.random()得到一个整数,然后将其类型转换为字符类型,连接起来生成六位验证字符串 ...
- MySql 的操作指令(window)
1.登录: mysql -uroot -p 2.查看所有数据库: show databases 3.切换数据库 : use databasename(数据库名称) 4.查看数据库的所有表格 ...
- 18 11 27 高级的服务器连接 epoll
---恢复内容开始--- 之前的 http 服务器 都是采用 轮询的方式(就像 厨师挨个问谁饿了好做饭 一样 ) 而 epoll 用着高级的 方式 事件通知 (直接问谁饿了) 同时还和 计 ...
- Causal Corpus 事件因果关系语料统计
Causal Corpus 事件因果关系语料统计 本文是对因果关系抽取领域数据库标注及开源情况的统计.除了对因果关系的标注,一些类似的语料也包含在内,从而为语料的使用提供灵活性,可以根据不同的目标选取 ...
- UVM实战[一]
一个新的连载系列,将以一个实际的UVM环境代码讲解的使用.机制等,更新周期会比较长. 文件说明 分享的文件是我个人和同学在参加复微杯大学生电子设计大赛中所完成的设计.赛题来自数字命题AI赛道,有兴趣可 ...