我的问题很特别,
给那些字符串
123456
String1 ABCD
String2 BDD
String3 CDEF
我们可以看到
这些计算的目的是获得每列中出现最多的字符。
我可以用来处理这个问题的最佳DataStructure是什么?知道我只知道执行时的每个字符串的长度。
我已经知道的信息是每个String开始的列的n°。
我的想法,我认为不是最好的是迭代列n°并且couting每个char出现多少并且最终发现大多数出现char。
你有更好的解决方案吗?
信息:我的字符串只能包含那些字符[A,B,C,D,E,F] 谢谢。
答案 0 :(得分:1)
public class Main {
public static void main(String[] args) {
String str1 = "ABCD ";
String str2 = " BDD ";
String str3 = " CDEF";
String[] reversed = getReversed(str1, str2, str3); // reverse rows with columns
for(int i=0; i< reversed.length; i++){
String trimedString = reversed[i].trim(); // removes spaces that around the string
System.out.println(findMaxOccurrenceCharValue(trimedString)); // counts the maximum occurrence char
}
}
private static String[] getReversed(String str1, String str2, String str3){
char[] s1 = str1.toCharArray();
char[] s2 = str2.toCharArray();
char[] s3 = str3.toCharArray();
String[] newStr = new String[6];
for(int i =0; i<6; i++){
newStr[i] = "" + s1[i] + s2[i] + s3[i];
}
return newStr;
}
private static String findMaxOccurrenceCharValue(String str) {
char[] array = str.toCharArray();
int[] count = new int[1000];
for(char c: array){
count[c]++;
}
// find the max occurrence character and number of occurrence
String maxCharacter = "";
int maxValue = -1;
for(int i=0;i< array.length;i++){
if(count[array[i]] > maxValue){
maxValue = count[array[i]];
maxCharacter = String.valueOf(array[i]);
}
}
return maxCharacter + "=" + maxValue;
}
}
输出:
A=1
B=2
C=2
D=3
E=1
F=1