Java在OJ時運行超時的問題解決方案
Java語言什么都好,就是在OJ的時候真的是太慢了,今天來講解一種讓Java運行速度快速提高的方法。
1.Scanner
scanner類在運行時候真的是巨慢無比,尤其是當要讀入很多數(shù)據(jù)的時候如果用scanner,那一定能讓你感受到絕望看一個,所以在讀入數(shù)據(jù)時我們一般使用BufferedReader來讀取數(shù)據(jù),先來看一個對比圖:
在讀入10,000,000 個整數(shù)時所需時間對比:
在讀入10,000,000 個浮點數(shù)時所需時間對比:
可以看到scanner用時差不多是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 {// 讀取下一個字符串 while (!tokenizer.hasMoreTokens()) { tokenizer = new StringTokenizer(reader.readLine()); } return tokenizer.nextToken(); } static int nextInt() throws IOException {// 讀取下一個int型數(shù)值 return Integer.parseInt(next()); } static double nextDouble() throws IOException {// 讀取下一個double型數(shù)值 return Double.parseDouble(next()); } }
其中nextLine對應Scanner.nextLine();
next() 對應Scanner.next();
nextInt() 對應Scanner.nextInt() ;
nextDouble() 對應Scanner.nextDouble() ;
2.String
當我們經(jīng)常要對一個字符串進行修改時,不要使用String類,因為String為靜態(tài),添加修改String會極其耗時,所以要使用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時運行超時的問題解決方案的文章就介紹到這了,更多相關(guān)ava在OJ時運行超時內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot2.6.3讀取不到nacos上的配置文件問題
這篇文章主要介紹了springboot2.6.3讀取不到nacos上的配置文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07hadoop的hdfs文件操作實現(xiàn)上傳文件到hdfs
這篇文章主要介紹了使用hadoop的API對HDFS上的文件訪問,其中包括上傳文件到HDFS上、從HDFS上下載文件和刪除HDFS上的文件,需要的朋友可以參考下2014-03-03Java基礎(chǔ)知識之BufferedReader流的使用
這篇文章主要介紹了Java基礎(chǔ)知識之BufferedReader流的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12