Cho em hỏi trong java ngoài cách duyệt mảng bằng vòng lặp for, for each, while, do while thì còn cách nào không ạ?
Hiện tại em đang có code như thế này cho em hỏi có cách nào tối ưu thời gian chạy của nó hơn không ạ?
Đề bài: Nhiệm vụ của bạn là viết một chương trình của một từ điển đơn giản, thực hiện các lệnh sau:
insert str: chèn xâustrvào từ điển hiện tại.find str: nếu hiện tại, xâustrnằm trong từ điển thì trả về"yes", ngược lại là"no".Với đầu vào là một tập các lệnh
insertvàfindvà ban đầu từ điển sẽ rỗng. Bạn hãy trả về một mảng kết quả cónphần tử, trong đónchính là số lượng lệnhfindcó trong input và kết quả thứichính là lầnfindthứi.Lưu ý: Các lệnh sẽ được thực hiện theo thứ tự.
Đầu vào/Đầu ra:
- [Giới hạn thời gian chạy]: 1 giây với C++, 6 giây với Java và C#, 8s với Python, GO và Js.
- [Giới hạn bộ nhớ]: 128 MB
- [Đầu vào] array of strings arr_op
1 ≤ arr_op.size() ≤ 2 x 105
Đảm bảoarr[i]chỉ có thể là một trong2dạng"insert str"hoặc"find str"
1 ≤ str.size() ≤ 12
Đảm bảo xâustrchỉ là chứa1trong4ký tự'A', 'C', 'G', 'T'.- [Đầu ra] Array of String
Một mảng có n phần tử, trong đó n là số lượng lệnh find và phần từ thứ i là kết quả của lần find thứ i.
Code của em:
static String[] dictionary(String[] arr_op) {
ArrayList<String> temp = new ArrayList<>();
ArrayList<String> result = new ArrayList<>();
for (int i = 0; i < arr_op.length; i++) {
if (arr_op[i].contains("insert")) {
temp.add(arr_op[i].substring(7));
} else {
if (temp.contains(arr_op[i].substring(5)) == true ) {
result.add("yes");
} else {
result.add("no");
}
}
}
return result.toArray(new String[0]);
}
Em cảm ơn nhiều ạ.




83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?