Để tìm từ được lặp lại nhiều thứ hai trong một chuỗi trong Java, mã như sau -
Ví dụ
import java.util.*; public class Demo{ static String second_repeated(Vector<String> my_seq){ HashMap <String, Integer> my_map = new HashMap<String,Integer>(my_seq.size()){ @Override public Integer get(Object key){ return containsKey(key) ? super.get(key) : 0; } }; for (int i = 0; i < my_seq.size(); i++) my_map.put(my_seq.get(i), my_map.get(my_seq.get(i))+1); int first_val = Integer.MIN_VALUE; int sec_val = Integer.MIN_VALUE; Iterator<Map.Entry<String, Integer>> my_iter = my_map.entrySet().iterator(); while (my_iter.hasNext()){ Map.Entry<String, Integer> ent = my_iter.next(); int v = ent.getValue(); if( v > first_val){ sec_val = first_val; first_val = v; } else if (v > sec_val && v != first_val) sec_val = v; } my_iter = my_map.entrySet().iterator(); while (my_iter.hasNext()){ Map.Entry<String, Integer> ent = my_iter.next(); int v = ent.getValue(); if (v == sec_val) return ent.getKey(); } return null; } public static void main(String[] args){ String arr[] = {"This", "sample", "only", "anything", "sample", "from", "sample","only"}; List<String> my_seq = Arrays.asList(arr); System.out.println("The second most repeated word in the sequence is : "); System.out.println(second_repeated(new Vector<>(my_seq))); } }
Đầu ra
The second most repeated word in the sequence is : Only
Một lớp có tên Demo chứa hàm ‘second_repeated’ tạo một bản đồ băm và ghi đè hàm ‘get’ trả về khóa của một giá trị cụ thể trong bản đồ băm. Một trình lặp được tạo và các phần tử tiếp theo được lặp lại bằng cách sử dụng hàm ‘hasNext’.
Trình lặp kiểm tra để xem số lần các từ được lặp lại và từ đầu tiên được lặp lại với số lần cao nhất được tìm thấy và lưu trữ. Một lần nữa hành động được thực hiện sẽ
đưa ra từ được lặp lại nhiều thứ hai. Lớp chính chứa một mảng chuỗi và một danh sách. Mảng chuỗi này cũng được chuyển đổi thành một danh sách. Hàm ‘second_repeated’ được gọi trong danh sách mới này và kết quả đầu ra có liên quan được hiển thị trên bảng điều khiển.