Java在OJ時(shí)運(yùn)行超時(shí)的問題解決方案
Java語言什么都好,就是在OJ的時(shí)候真的是太慢了,今天來講解一種讓Java運(yùn)行速度快速提高的方法。
1.Scanner
scanner類在運(yùn)行時(shí)候真的是巨慢無比,尤其是當(dāng)要讀入很多數(shù)據(jù)的時(shí)候如果用scanner,那一定能讓你感受到絕望看一個(gè),所以在讀入數(shù)據(jù)時(shí)我們一般使用BufferedReader來讀取數(shù)據(jù),先來看一個(gè)對(duì)比圖:
在讀入10,000,000 個(gè)整數(shù)時(shí)所需時(shí)間對(duì)比:
在讀入10,000,000 個(gè)浮點(diǎn)數(shù)時(shí)所需時(shí)間對(duì)比:
可以看到scanner用時(shí)差不多是BufferedReader的10到20倍。
如何使用BufferedReader呢?
class Reader { static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); static StringTokenizer tokenizer = new StringTokenizer(""); static String nextLine() throws IOException{// 讀取下一行字符串 return reader.readLine(); } static String next() throws IOException {// 讀取下一個(gè)字符串 while (!tokenizer.hasMoreTokens()) { tokenizer = new StringTokenizer(reader.readLine()); } return tokenizer.nextToken(); } static int nextInt() throws IOException {// 讀取下一個(gè)int型數(shù)值 return Integer.parseInt(next()); } static double nextDouble() throws IOException {// 讀取下一個(gè)double型數(shù)值 return Double.parseDouble(next()); } }
其中nextLine對(duì)應(yīng)Scanner.nextLine();
next() 對(duì)應(yīng)Scanner.next();
nextInt() 對(duì)應(yīng)Scanner.nextInt() ;
nextDouble() 對(duì)應(yīng)Scanner.nextDouble() ;
2.String
當(dāng)我們經(jīng)常要對(duì)一個(gè)字符串進(jìn)行修改時(shí),不要使用String類,因?yàn)镾tring為靜態(tài),添加修改String會(huì)極其耗時(shí),所以要使用StringBuilder()
StringBuilder s=new StringBuilder(); //建立StringBuilder的兩種方式 StringBuilder s1=new StringBuilder("Adam"); s.append("hahaha"); //在字符串末尾添加字符串 s.insert(3,"hhh"); //在字符串中的位置插入字符串 s.setCharAt(1, 's'); //將字符串中指定位置字符替換 String s3=s.toString(); //轉(zhuǎn)換為String
到此這篇關(guān)于Java在OJ時(shí)運(yùn)行超時(shí)的問題解決方案的文章就介紹到這了,更多相關(guān)ava在OJ時(shí)運(yùn)行超時(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java搭建一個(gè)Socket服務(wù)器響應(yīng)多用戶訪問
本篇文章主要介紹了java搭建一個(gè)Socket服務(wù)器響應(yīng)多用戶訪問,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02springboot2.6.3讀取不到nacos上的配置文件問題
這篇文章主要介紹了springboot2.6.3讀取不到nacos上的配置文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java實(shí)現(xiàn)多級(jí)表頭和復(fù)雜表頭的導(dǎo)出功能
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多級(jí)表頭和復(fù)雜表頭的導(dǎo)出功能的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03hadoop的hdfs文件操作實(shí)現(xiàn)上傳文件到hdfs
這篇文章主要介紹了使用hadoop的API對(duì)HDFS上的文件訪問,其中包括上傳文件到HDFS上、從HDFS上下載文件和刪除HDFS上的文件,需要的朋友可以參考下2014-03-03Java基礎(chǔ)知識(shí)之BufferedReader流的使用
這篇文章主要介紹了Java基礎(chǔ)知識(shí)之BufferedReader流的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12