Schnelles Lesen und schnelles Schreiben für den Java-Algorithmus-Wettbewerb erforderlich (sehr detaillierte Interpretation)

Schnelles Lesen und schnelles Schreiben für den Java-Algorithmus-Wettbewerb erforderlich (sehr detaillierte Interpretation)

Nachteile des Java-Schreibalgorithmus: langsame Geschwindigkeit, komplexes Lesen und Schreiben, unerklärliches WA (falsche Antwort), TL (Timeout), CL (Superspeicher) ...

(Was sollten wir dann noch lernen? Es ist nicht gut, auf C++ umzusteigen, um Algorithmen zu schreiben.) Keine Sorge, keine Sorge, es gibt Vorteile, wenn es Nachteile gibt.

Wir wissen nicht, ob es gut riecht oder nicht. Aber wir können es uns nicht leisten, C++ zu spielen. Es gibt zu viele Bosse, zu lockig.

Dadurch werden die Vorteile von Java deutlich.

Die Vorteile des Schreibens von Algorithmen in Java: Bei Wettbewerben können weniger Menschen Preise gewinnen. Als erfahrene Sprache im Web- und Android-Bereich ist Java immer noch eine Existenz auf Vaterebene, sodass das Schreiben von Algorithmen in Java auch für die zukünftige Entwicklung vorbereitet werden kann. . .

Kein Blödsinn mehr, einfach schnell lesen und schreiben.

StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));//快读
PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));//快写

Verwendung: Hier ist eine äußerst praktische Methode: Schreiben Sie direkt eine Leseklasse

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;
	}
}

Im Folgenden wird die Verwendung dieser Leseklasse demonstriert

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;
	}
}

eingeben

32
adfa
23
AAA

Ausgang

32adfa23AAA55

Aus der Ein- und Ausgabe ist bekannt, dass die Werte alle eingelesen werden.

Notiz

Wenn wir StreamTokenizer verwenden, verwenden wir ihn im Allgemeinen nur zur Verarbeitung digitaler Eingaben. Für Zeichenfolgen verwenden wir nicht das obige st.sval, also die obige readLine()-Methode, da st.sval nur Buchstaben, aber keine Sonderzeichen lesen kann Symbole und Zahlen. Abrufen, Einlesen ist null.

Wenn wir also auf das Lesen von Zeichenfolgen stoßen, verwenden wir ehrlich gesagt immer noch BufferedReader.

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
bf.readLine();

Nun, nachdem Sie diesen Artikel gelesen haben, können Sie den Scanner vergessen. Ich werde hier kein Beispiel geben, um die Lesezeit von Scanner, BufferedReader und StreamTokenizer zu vergleichen. Sie müssen nur bedenken, dass BufferedReader und StreamTokenizer viel schneller sind als Scanner. Also vergessen wir ihn einfach. Ich weiß, dass du das vielleicht nicht möchtest. Aber es ist ein Zeichen unseres Fortschritts. Das Zertifikat ist am Ende beigefügt, es ist trotzdem nützlich, es schnell zu lesen, hahaha.
Bitte fügen Sie eine Bildbeschreibung hinzu

Je suppose que tu aimes

Origine blog.csdn.net/gudada010/article/details/117526186
conseillé
Classement