diff --git a/java/reverse/FastScanner.java b/java/reverse/FastScanner.java index cf455f7..a614140 100644 --- a/java/reverse/FastScanner.java +++ b/java/reverse/FastScanner.java @@ -18,17 +18,28 @@ public class FastScanner { boolean hasNextInt() { if (line == null) return false; - while (pos < line.length() && Character.isWhitespace(line.charAt(pos))) pos++; - return pos < line.length(); + while (pos < line.length() && (Character.isWhitespace(line.charAt(pos)) || + Character.getType(line.charAt(pos)) == Character.START_PUNCTUATION || + Character.getType(line.charAt(pos)) == Character.END_PUNCTUATION)) { + pos++; + } + return pos < line.length() && (Character.isDigit(line.charAt(pos)) || line.charAt(pos) == '-'); } int nextInt() { - while (pos < line.length() && Character.isWhitespace(line.charAt(pos))) pos++; + while (pos < line.length() && (Character.isWhitespace(line.charAt(pos)) || + Character.getType(line.charAt(pos)) == Character.START_PUNCTUATION || + Character.getType(line.charAt(pos)) == Character.END_PUNCTUATION)) { + pos++; + } + int start = pos; boolean negative = line.charAt(pos) == '-'; if (negative) pos++; - while (pos < line.length() && Character.isDigit(line.charAt(pos))) pos++; + while (pos < line.length() && Character.isDigit(line.charAt(pos))) { + pos++; + } int result = 0; for (int i = negative ? start + 1 : start; i < pos; i++) {