求出现次数最多的那个字母及次数,如有多个重复的则都求出。〔金山公司面试题〕
import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.TreeSet; public class FindRepeatChar { public static void doString(String strInput) { char[] chars = strInput.toCharArray(); ArrayList<String> lists = new ArrayList<String>(); TreeSet<String> set = new TreeSet<String>(); for (int i = 0; i < chars.length; i++) { lists.add(String.valueOf(chars)); set.add(String.valueOf(chars)); } System.out.println(set); Collections.sort(lists); System.out.println(lists); StringBuffer sb = new StringBuffer(); for (int i = 0; i < lists.size(); i++) { sb.append(lists.get(i)); } strInput = sb.toString(); System.out.println(strInput); int max = 0; String maxString = ""; ArrayList<String> maxList = new ArrayList<String>(); for (Iterator<String> its = set.iterator(); its.hasNext();) { String os = (String) its.next(); int begin = strInput.indexOf(os); int end = strInput.lastIndexOf(os); int value = end - begin + 1; if (value > max && value > 1) { max = value; maxString = os; maxList.add(os); } else if (value == max) { maxList.add(os); } } for (int i = 0; i < maxList.size(); i++) { if (maxList.get(i).equals(maxString)) { break; } } System.out.println("出现最多的字符为:"); for (int i = 0; i < maxList.size(); i++) { System.out.println(maxList.get(i) + ""); } System.out.println(); System.out.println("出现最多的次数为:" + max); } public static void main(String[] args) { String strInput = new String("aavzcadfdsfsdhshgWasdfasdf"); doString(strInput); } }
页:
[1]