[抄题]:

接口:int read4(char * buf)一次从文件中读取 4 个字符。
返回值是实际读取的字符数。 例如,如果文件中只剩下 3 个字符,则返回 3。
通过使用read4 接口,实现从文件读取 n 个字符的函数int read(char * buf,int n)

[暴力解法]:

时间分析:

空间分析:

[思维问题]:

[一句话思路]:

buffer是缓冲区,buf是缓存。

[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):

[画图]:

  1. 用数组实现队列的原理是:进入时是tail移动,出去时是head移动,形成模拟队列

[一刷]:

  1. i < n表示内存需求未被满足,head < tail就正常读取。入队时不需要i++,read4已带。
  2. head tail都要初始化为0

[二刷]:

[三刷]:

[四刷]:

[五刷]:

[五分钟肉眼debug的结果]:

[总结]:

buffer是缓冲区,buf是内存

[复杂度]:Time complexity: O(n) Space complexity: O(n)

[英文数据结构或算法,为什么不用别的数据结构或算法]:

数组,一次只能存4个,空间固定

[其他解法]:

[Follow Up]:

[LC给出的题目变变变]:

[代码风格] :

/* The read4 API is defined in the parent class Reader4.
int read4(char[] buf); */ public class Solution extends Reader4 {
/**
* @param buf destination buffer
* @param n maximum number of characters to read
* @return the number of characters read
*/
char[] buffer = new char[4];
int head = 0;
int tail = 0; public int read(char[] buf, int n) {
int i = 0;
while (i < n) {
if (head == tail) {
head = 0;
tail = read4(buffer);
if (tail == 0) {
break;
}
}
while (head < tail && i < n) {
buf[i++] = buffer[head++];
}
}
return i;
}
}

从文件中读取字符-多次调用read characters from file multiple calls的更多相关文章

  1. 一些常用的文本文件格式(TXT,JSON,CSV)以及如何从这些文件中读取和写入数据

    TXT文件: txt是微软在操作系统上附带的一种文本格式,文件以.txt为后缀. 从txt文件中读取数据: with open ('xxx.txt') as file: data=file.readl ...

  2. Java中读取txt文件中中文字符时,出现乱码的解决办法

    这是我写的一个Java课程作业时,遇到的问题. 问题描述: 我要实现的就是将txt文件中的内容按一定格式读取出来后,存放在相应的数组. 我刚开始运行时发现,英文可以实现,但是中文字符就是各种乱码. 最 ...

  3. go从文件中读取json字符串并转换

    go从文件中读取json字符串并转换 将要读取的文件的一部分 [ { "children": [ { "children": [ { "code&qu ...

  4. Python从文件中读取字符串,用正则表达式匹配中文字符的问题

    2013-07-27 21:01:37|           在Windows下,用Python从.txt文件中读取字符串,并用正则表达式匹配中文,在网上看了方法,用的时候发现中文没有被匹配.     ...

  5. 从文本中读取字符——feof函数问题

    feof()函数 函数原型:int feof(FILE *fp): 函数功能:检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0,文件结束符只能被clearerr()函数清除 (函数feof ...

  6. Servlet从本地文件中读取图片,并显示在页面中

    import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpSer ...

  7. Python3实现从文件中读取指定行的方法

    from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...

  8. Java将对象保存到文件中/从文件中读取对象

    1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Obje ...

  9. Java笔记13:统计文件中每个字符出现的次数

    一.代码实现 import java.io.*; import java.util.*; /** 功能:统计文件中每个字符出现的次数 思路: 1.定义字符读取(缓冲)流 2.循环读取文件里的字符,用一 ...

随机推荐

  1. MySQL 序列 AUTO_INCREMENT

    MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列 ...

  2. django-auth组件的注册,登录,登出,及验证是否已经登入。使用login的属性

    1.注册: 1.创建User(django自带的用户model)的form对象 定义form验证返回的错误提示信息 error_msg = { 'username': {'required': '用户 ...

  3. 类unix系统同步目录,却不同步目录中文件

    rsync -av --del -f '+ */' -f '- *' src/ dst/;用此条命令即可同步同主机间不同目录到一个位置,或是同步道不同主机同位置. 或是用以下命令: ssh 10.18 ...

  4. 网页向flash传参数。显示视频。(例子)

    [例子1]网页向flash传参数,显示视频: 下面要做的事情:做一个flash文件,可以通过网页得到参数(视频文件名).然后显示视频,并在文本框中显示视频文件名的文字. 1.建立一个flash文件:3 ...

  5. 35. CentOS-6.3安装Mysql-5.5.29

    安装方式分为rpm和源码编译安装两种,本文是采用mysql源码编译方式,编译器使用Cmake.软件需要mysql-5.5.29.tar.gz和cmake-2.8.10.2.tar.gz,请自行下载.下 ...

  6. vue深入了解组件——Prop

    一.Prop的大小写(camelCase vs kebab-case) HTML中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符.这意味着当你使用DOM中的模板时,cameCase ...

  7. SQL语言类别

    SQL语言主要分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL. DQL (data query language) DML(data manipulati ...

  8. 分页导航jsp

    <c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择. switch语句中有case,而<c:choose>标签中对应有<c:when ...

  9. spring ioc 注解配置

    要注意spring 版本与jdk的兼容性 applicationContext-resource.xml: <beans xmlns="http://www.springframewo ...

  10. hibernate 中一对多的注解配置

    //一方@Entity@Table(name="test_classinfo")public class ClassInfo { @Id @SequenceGenerator(na ...