gpt4 book ai didi

java - Java 中的速度为什么有些代码运行得更快

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:13 25 4
gpt4 key购买 nike

我正在尝试 UVa 问题编号 10324我编写了以下解决方案,该解决方案被接受但给出了一个非常糟糕的 2.670 秒运行时间我有以下两个代码这是我的代码

    public static void main(String[] args) throws Exception{
// write your code here
StringBuilder op = new StringBuilder();
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(isr);
String input, tmp[];
int n, l, u, j, i = 0;
boolean dec;
char thi;
while ((input = reader.readLine()) != null) {
op.append("Case " + (++i) + ":\n");
n = Integer.parseInt(reader.readLine());
while (n-- > 0) {
tmp = reader.readLine().split(" ");
l = Integer.parseInt(tmp[0]);
u = Integer.parseInt(tmp[1]);
if (l > u) {
l ^= u;
u ^= l;
l ^= u;
}
//System.out.println(l + "|" + u);
dec = true;
thi = input.charAt(l++);
for (; l <= u; l++) {
if (thi != input.charAt(l)||(thi != input.charAt(u--))) {
dec = false;
break;
}
}
op.append((dec ? "Yes\n" : "No\n"));
}
}
System.out.print(op.toString());
return;

}
}

另一个代码是我在 Mr Gorgon's Solution 上找到的这有 0.84 秒的运行时间

public static void main(String[] args) throws Exception {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder("");
int testCase = 1;
String line;
while ((line = br.readLine()) != null) {
sb.append("Case ").append(testCase).append(":\n");
testCase++;
int noOfCases = Integer.parseInt(br.readLine());
for (int j = 0; j < noOfCases; j++) {
String[] str = br.readLine().split(" ");
int val1 = Integer.parseInt(str[0]);
int val2 = Integer.parseInt(str[1]);
if (val1 > val2) {
val1 ^= val2;
val2 ^= val1;
val1 ^= val2;
}
boolean isValid = true;
if (val1 != val2) {
for (int i = val1; i < val2; i++) {
if (line.charAt(i) != line.charAt(i + 1)) {
isValid = false;
break;
}
}
}
if (isValid)
sb.append("Yes\n");
else
sb.append("No\n");
}
}
System.out.print(sb);
}

我发现很难理解为什么当所有任务基本相同时这段代码运行得如此快。而且我的代码比 Gorgons 代码有更少的声明

最佳答案

  • op.append("案例"+ (++i) + ":\n");

这否定了 StringBuilder 的好处

  • if (val1 != val2) { 在第二个版本中缩短了循环

关于java - Java 中的速度为什么有些代码运行得更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39847508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com