버퍼링 된 리더는 사용자로부터 값을 입력하는 경우 스캐너 클래스보다 훨씬 빠르지 만 알고리즘 경쟁의 대부분 또는 인터뷰의 경우 단일 입력 행에 여러 정수가있는 경우가 많습니다. 따라서,이 스캐너 클래스를 사용하기 쉽게된다 - (가 readInt 옵션이 없습니다로) 버퍼 리더의 경우Java의 한 줄에 여러 정수를 사용하는 경우 스캐너 클래스 대신 BufferedReader를 사용하는 것이 가장 좋습니까?
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
먼저 입력 라인을해야합니다 다음 정수의 수에 따라 라인을 구문 분석 가에 -
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a,b;
String line = br.readLine();
String[] strs = line.trim().split("\\s+");
a=Integer.parseInt(strs[0]);
b=Integer.parseInt(strs[1]);
입력은 구문 분석 indiviual 정수로 얻은 문자열을 분할하기 위해 많은 시간을 차지하지 않습니다, 후자의 경우에 더 빠를 수 있지만? 따라서 이러한 경우 중 하나가 더 빠르거나 빠릅니까?
감사합니다.
실제로 차이를 감지 할 수 있다면 완전히 다른 문제가 발생할 수 있습니다. – Fildor
가장 빠른 방법은 바이트 블록을 배열로 읽어서 각 바이트를 반복하고 문자 시퀀스를 정수 값으로 수동 변환하는 것입니다. 이렇게하면 문자열 객체를 할당하고 split()을 호출하거나 regexes를 사용하지 않아도됩니다. – Nayuki
스택 오버 플로우에 익숙하지 않아서 더 많은 답변을 기다려야 할 수도 있습니다. 감사합니다. – user8321763