题目:字符序列,[1,3,2,1,7,5,4,9]找出现次数最多的最大的字符
其实题意不是很明确,比如这个字符包不包含英文字母。
这里强调是数字字符:
思路:排序,1,1,2,3,4,5,9
参考实现,代码不是很好看:
//题目:字符序列,[1,3,2,1,7,5,4,9]找出现次数最多的最大的字符
public class No1 {
public static void main(String[] args) {
int array[] = {3, 3, 2, 1, 7, 5, 4, 5};
if (1 == array.length) {
System.out.println("结果出现次数最多的是1次,最大的字符是" + array[0]);
exit(1);
}
//先排序
sort(array);
int preMaxCount = 1;
int preMaxInt = array[0];
int curInt = 0;
int curMaxCount = 0;
int i = 1;
//记录一个之前最大字符,和之前最大次数,以及当前位置的次数
//先找到第一个字符的结束,到与其不同的第二个字符开始
for (; i < array.length; i++) {
if (preMaxInt == array[i]) {
preMaxCount++;
} else {
curMaxCount++;
curInt = array[i];
i++;
break;
}
}
//从第二个字符开始接着循环替换之前最大字符和次数
for (; i < array.length; i++) {
if (curInt == array[i]) {
curMaxCount++;
} else {
if (preMaxCount <= curMaxCount) {
preMaxCount = curMaxCount;
preMaxInt = curInt;
}
curMaxCount = 1;
curInt = array[i];
}
}
if (preMaxCount <= curMaxCount) {
preMaxCount = curMaxCount;
preMaxInt = curInt;
}
System.out.println("结果出现次数最多的是" + preMaxCount + "次,最大的字符是" + preMaxInt);
}
public static void sort(int array[]) {
//冒泡,把最大的放右边
int temp = 0;
for (int i = array.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
}