今天遇到的面试题,回来还是敲敲代码
题目:Java实现将一个字符里出现最多的字母截取,如,addcbbs变为acs
package cn.itchg;
/**
* Created by CHG on 2017-02-28 22:53.
*/
public class Test {
public static void main(String[] args) {
String str = "addcbbs";
getStringStr(str);
}
private static void getStringStr(String str) {
char[] chars = str.toCharArray(); //将原字符串转为字符数组
int arr[] = new int[26]; //新建大小为26个字母的数组
StringBuffer sb = new StringBuffer();//存结果
//计算每个字符总共出现次数,存入arr的相应位置
for (int i = 0; i < chars.length; i++) {
int temp = chars[i]-'a';
arr[temp]++;
}
int maxNum = arr[0];
//得到arr中最大的值
for (int j = 0; j <arr.length ; j++) {
if (arr[j] > maxNum)
maxNum = arr[j];
}
//最大值的字符不一定只有1个,还需要遍历chars的每个字符,看是否符合最大值,若不是,则sb.append();
for (int k = 0; k < chars.length;k++) {
for (int l = 0; l < arr.length; l++) {
int temp = chars[k] - 'a';
if (arr[temp] != maxNum) {
sb.append(chars[k]);
break;
}
}
}
System.out.println(sb.toString());
}
}
输出结果:
acs
Process finished with exit code 0