【发布时间】:2021-10-16 14:05:06
【问题描述】:
我有一个解决问题的问题。我必须使用 bufferedReader 仅将单词添加到树集中(并输出树集的大小),但问题是我无法通过编译器速度测试限制。文本仅包含字母和空格(可以是空行)。我必须找到一个新的解决方案,但似乎不是这样:
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
Set<String> text = new TreeSet<String>();
String words[], line;
while ((line = read.readLine()) != null) {
words = line.split("\\s+");
for (int i = 0; i < words.length && words[0].length() > 0; i++) {
text.add(words[i]);
}
}
System.out.println(text.size());
有没有其他的“拆分”方法可以让编译器使用更少的“时间思考”?
【问题讨论】:
-
你能用
Scanner类代替BufferReader吗? -
不确定你是否想要循环保护中的“
words[0].length() > 0”条件,因为如果字符串以空格开头,即使后面有单词,这也会停止添加任何内容。将其作为条件放入循环中。 (并且只需使用一个 for 每个循环,无需使用数组索引)。
标签: java split bufferedreader