題目鏈接:
http://acm.hdu.edu.cn/showproblem.php?pid=1004
題意:找出輸入的字符序列中重複次數最多的(題目保證每一個測試案例只有一個是最多的) :
方法一(使用字符串數組):
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String[] s = new String[1001];// 存儲顏色
int[] count = new int[1001];
int T = in.nextInt();// 測試個數
if (T == 0)
break;
for (int i = 0; i < T; i++) {// 輸入顏色
s[i] = in.next();
}
for (int i = 0; i < T; i++) {// 遍歷
for (int j = 0; j < T; j++) {
if (s[j].equals(s[i]))
count[i]++;
}
}
int max = count[0], index = 0;
for (int i = 0; i < count.length; i++) {
if (count[i] > max) {
max = count[i];
index = i;
}
}
System.out.println(s[index]);
}
}
}
方法二(使用HashMap):
import java.util.Scanner;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
HashMap<String, Integer> mp = new HashMap<String, Integer>();
while (in.hasNext()) {
int T = in.nextInt();
if (T == 0)
break;
String key;
for (int i = 0; i < T; i++) {
key = in.next();
if (mp.containsKey(key) == false)//如果容器中不存在這個key
mp.put(key, new Integer(1));
else
mp.put(key, new Integer(mp.get(key).intValue() + 1));
}
int max = 0;
String ans = null;
for (String key1 : mp.keySet()) {//遍歷HashMap
if (mp.get(key1).intValue() > max) {
max = mp.get(key1).intValue();
ans = key1;
}
}
System.out.println(ans);
mp.clear();//清空容器
}
}
}
HashMap的使用(本題爲例):
- 導包:import java.util.HashMap;
- 創建:HashMap<String, Integer> mp = new
- HashMap<String, Integer>(); 存放鍵值對:mp.put(s, new Integer(1));
- 鍵中是否包含這個數據:mp.containsKey(s) == false;(true表示有,false表示無)。
- 通過鍵拿值:mp.get(s).intValue();加.intValue()是表示返回int類型,若不加返回包裝類Integer。
- 遍歷HashMap: for (String str : mp.keySet()) 其中String類型的str相當於int類型的變量i。
- 清空容器:mp.clear(); 釋放內存:in.close();
其他:
- 判空:map.isEmpty();
- 從鍵值中刪除:map.remove(“zhang”);