官方解答 · 置頂Java
官方解答|索引讀取復原
官方解答|索引讀取復原
解題思路
先 trim 解析索引,再存取 nums,最後將取得值轉為 x/2。格式錯執行「格式錯略過」,索引錯執行「索引錯補零」;兩種 catch 分開計數。最後回傳結果序列。
正確性與邊界
格式解析失敗時不再存取陣列,因此不重複計成索引錯。補值直接加入,不再次轉換。索引錯誤依指定略過或補值,不存取邊界元素。
複雜度
設總文字長度為 L、筆數為 n。時間 O(L+n),額外空間 O(n)。
公開範例
輸入 {"nums": [10], "texts": ["0"]},依上述步驟得到 [5]。
下方程式可直接取代起始碼;使用 Java 11,入口為 Solution.solve。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
import java.util.*;
public class Solution {
public static List<Integer> solve(int[] nums, String[] texts) {
List<Integer> result = new ArrayList<>();
int formatErrors=0, indexErrors=0;
for (String text : texts) {
int index=0;
try {
index = Integer.parseInt(text.trim(),10);
int x = nums[index];
result.add(x/2);
} catch (NumberFormatException error) {
formatErrors++;
} catch (ArrayIndexOutOfBoundsException error) {
indexErrors++;
result.add(0);
}
}
return result;
}
}
留言討論 0
登入 後就能留言,一起討論不同的寫法。