java算法竞赛必备之快读快写(超详细解读)
java算法竞赛必备之快读快写(超详细解读)
java写算法的缺点:速度慢、读写复杂、莫名WA(错误答案)、TL(超时)、CL(超内存)…
(那我们还学个啥啊,都转c++写算法不香嘛。)别急别急,有缺点不就有优点嘛。
香不香咱不知道。但是玩c++的咱都惹不起。大佬太多,太卷了啊。
所以java优势就体现出来啊。
java写算法的优点:人少比赛好拿奖,java作为老牌语言在web和安卓领域还是爸爸级的存在所以用java写算法也可以为以后开发做准备啊。。。
废话不多说了,快读快写直接上。
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));//快读
PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));//快写
使用方法:这里推荐一个超级方便的使用方法,直接写一个读类
class Read{StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));public int nextInt() throws Exception{st.nextToken();return (int)st.nval;}public String readLine() throws Exception{ // 不推荐使用st.nextToken();return st.sval;}
}
下面演示一下这个读类的使用
package demo;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {public static void main(String[] args) throws Exception {PrintWriter p = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));Read r = new Read();int a = r.nextInt();String str1 = r.readLine();int b =r.nextInt();String str2 = r.readLine();System.out.println(a+str1+b+str2);}
}
class Read{StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));public int nextInt() throws Exception{st.nextToken();return (int)st.nval;}public String readLine() throws Exception{ // 这个不推荐使用st.nextToken();return st.sval;}
}
输入
32
adfa
23
AAA
输出
32adfa23AAA55
由输入输出知道,值都是读进来的。
注意
我们在使用StreamTokenizer时一般只用来处理数字的输入,对于字符串不使用上面的st.sval即上面的readLine()方法,因为st.sval只会读取字母,对于特殊符号和数字不会读取,读入的会是null。
所以如果我们遇到读字符串的还是老老实实的使用BufferedReader。
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
bf.readLine();
好了,看完这篇文章后你可以忘记Scanner了。我这里就不举例子来对比Scanner,BufferedReader,StreamTokenizer他们三个的读入时间,你只要记住BufferedReader和StreamTokenizer是远远比Scanner速度快的。所以咱就忘了他吧。我知道你可能不舍得。但这是我们进步的象征。
java算法竞赛必备之快读快写(超详细解读)相关推荐
- acm竞赛技巧——c/c++ /java 快读快写(整数,字符串)
文章目录 整数 快读 快写 字符串 读入 读出 java快读快输 注意: 本文参考博客 整数 这里用int做示范,long long,__int128 改下变量类型即可 快读 inline int r ...
- Java的快读快输出
众所周知,Java Scanner类的读入的真的真的慢 在我们使用Scanner类进行读入数据时,数据一旦过万,他就会显得非常慢 而用StreamTokenizer类差不多好像是要比Scanner快个 ...
- java快读快输模板
java 快读快输 快读: class InputReader {BufferedReader buf;StringTokenizer tok;InputReader() {buf = new Buf ...
- 笔试中题目的时间复杂度以及快读快写介绍
本篇主要分享下近期笔试中, 关于时间复杂度得一些经验. 1.题目格式以及快读快写 目前比较流行的题目格式大致有两种, 一种是核心代码格式(以力扣为主), 另一种是ACM格式(NOIP为主) ...
- 【C++快读快输详解(快速读入数字,快速输出数字)】
众所周知,C++自带读入(废话),如 int a; cin>>a; 这个读入简单方便,但到后面,读的东西多了,读的也就显得慢些,所以有了下面的方式 int a; scanf("% ...
- 快读快写:读入输出优化
引入 初学OIOIOI的时候,只用的cin/coutcin/coutcin/cout,后来教练说,cincincin很慢,有的数组光读入就超时了--balabalabalabalabalabala,所 ...
- 快读快写和fread,fwrite--zhengjun
首先,先谈谈快读快写 这是我一开始的输入输出 cin>>a; cout<<a; 然后,因为在一次模拟赛中cincincin被卡掉了,于是,我就改用 scanf("%d ...
- C++ 快读快输模板
C++快读快输模板 [快读] inline int read() {int X=0; bool flag=1; char ch=getchar();while(ch<'0'||ch>'9' ...
- java算法竞赛:快速读入输出
我们在使用java写算法题时,常常会因为超时而苦恼,明明是和C++一样的思路,甚至代码实现都极为相似,但是却比它慢上一大截,这时候不妨试试IO流读入输出数据,提升速度. 参考文章 Java写算法题中那 ...
最新文章
- 实战Solaris 10
- Android的手势交互
- Radar Installation
- 【AI视野·今日NLP 自然语言处理论文速览 第二十期】Thu, 8 Jul 2021
- 连接svn认证失败有那些原因_SVN下载安装及使用教程(一)
- 微信小程序开发的坑---新建页面or修改app.json
- 电脑分辨率设置工具_打印不求人:我猜你并不会设置“分辨率”!
- Julia :PyPlot的plot_date
- 2021年中国直播电商投融资情况及行业发展中存在的问题、发展趋势和对策分析[图]
- cocos2d-x 学习笔记——瓦片地图TiledMap
- HID、SCSI、CCID设备的通信
- c++算法解决力扣跳步问题
- 制作在线单词测试的软件,推荐几个在线测试英语单词量的网站
- 超越卷积、自注意力机制:强大的神经网络新算子involution(连算子都内卷= =)
- php 豆瓣api_豆瓣的账号登录及PHP api操作
- 《Python:编程:从入门到实践》学习笔记_第9章 类
- platform创建说明
- 想剑网三妹子最多服务器,玩家有多“疯狂”?为了新门派,提前一年为其准备108套外观...
- python的Panda3D库如何安装使用以及用途
- .dll文件有什么用?