官方解答 · 置頂Java
官方解答|算式結果清單
官方解答|算式結果清單
解題思路
把每筆文字切為五欄,解析三個整數與兩個運算子。計算規則是「強制先算前兩數,再用該結果與第三數運算,不使用通常優先順序」,再套用 x*x。最後按記錄順序回傳所有轉換結果。
正確性與邊界
只有 +、-、*,分支完整覆蓋兩個運算子的所有組合。首尾及連續空格不影響切欄。空 records 的明細輸出為 [],統計輸出為 [0]。
複雜度
設總文字長度為 L,時間 O(L),額外空間 O(n) 存放結果。
公開範例
輸入 {"records": ["1 + 2 * 3"]},依上述步驟得到 [81]。
下方程式可直接取代起始碼;使用 Java 11,入口為 Solution.solve。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
import java.util.*;
public class Solution {
public static List<Integer> solve(String[] records) {
List<Integer> result = new ArrayList<>();
for (String record : records) {
String[] parts = record.trim().split(" +");
int a = Integer.parseInt(parts[0]);
int b = Integer.parseInt(parts[2]);
int c = Integer.parseInt(parts[4]);
String left = parts[1], right = parts[3];
int x;
int first = left.equals("*") ? a*b : left.equals("+") ? a+b : a-b;
x = right.equals("*") ? first*c : right.equals("+") ? first+c : first-c;
result.add(x*x);
}
return result;
}
}
留言討論 0
登入 後就能留言,一起討論不同的寫法。