一、利用Hashmap和正则表达式中的Pattern和Matcher类统计统计出现的每个ID出现的及次数,并且输出。
package text530; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Text530 { public static void main(String[] args) { String words = "002 001 003 002 001 003 001 001 002 001 001 001 001 001 001 001 001 002 004 005 001 001"; HashMap<String, Integer> map = new HashMap<String, Integer>(); String reg = "[0-9]+"; Pattern p = Pattern.compile(reg); Matcher m = p.matcher(words); Integer count = 0; while (m.find()) { count++; String w = m.group(); if (null == map.get(w)) { map.put(w, 1); } else { int x = map.get(w); map.put(w, x + 1); } } for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } } }
运行截图:
二、“水王”是一个论坛中发帖数量超过一半的用户,他的数量大于其他用户所有的数量总和;将所有发帖列表存入一个数组,设置一个标志变量和统计变量,循环这个数组将数组第一个元素赋予标志变量,
将统计变量置为“1”,若后续元素与之前相同,则统计变量“+1”,若后续元素与之前不相同,则统计变量“-1”,若统计变量变为“0”,则为标志变量置新值,返回最终的结果;
package text530;
public class Text5301 {
public static String find(String a[], int n) {
String X = a[0];
int num = 0;
for (int i = 0; i < n; i++) {
if (num == 0) {
X = a[i];
num = 1;
} else if (a[i] == X) {
num++;
} else {
num--;
}
}
return X;
}
public static void main(String[] args) {
String a[] = { "001", "001", "001", "000", "001", "000", "000", "000", "000", "002", "001", "001", "001", "001", "001", "003", "005" };
int n = a.length;
System.out.print("水王ID:");
System.out.println(find(a, n));
}
}
运行截图: