gpt4 book ai didi

java - 如何计算多个字符串中某个字符出现的次数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:18 30 4
gpt4 key购买 nike

我的问题很特别,

给出那些字符串

          123456  
String1 ABCD
String2 BDD
String3 CDEF

正如我们所见

  • 第1列A的个数是1。
  • 第2列B的个数是2。
  • 第3列C的个数是2。
  • 第3列D的个数是1。
  • 第4列D的个数是3。
  • 第5列E的个数是1。
  • 第6列F的个数是1。

这些计算的目的是获取每列中出现次数最多的字符。

我可以用来处理这个问题的最佳数据结构是什么?知道我只在执行时知道每个字符串的长度。

我已经知道的信息是每个字符串开始的列的编号。

我的想法(我认为这不是最好的)是遍历 n° 列并计算每个字符出现的次数,最后找到出现次数最多的字符。

你有更好的解决方案吗?

信息: 我的字符串只能包含那些 char[A,B,C,D,E,F]谢谢。

最佳答案

浏览此示例代码,您可以将字符串作为列表插入,这样代码中的字符串数量就不会受到任何限制,但会给出正确的输出。我在需要的地方添加了内联评论。

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class StringOperation {
public static void main(String[] args) {
List<String> stringList=new ArrayList<String>();
stringList.add("ABCD");
stringList.add(" BDD");
stringList.add(" CDEF");
stringList.add("ABCD");

char[][] array=getTwoDimentionArray(stringList);

for (int i = 0; i < array.length; i++) {
char[] cs = array[i];
numberOfCharactorsinString(cs, i);

}

}

//This method will create two dimension array from String list same time it will convert columns in to rows
public static char[][] getTwoDimentionArray(List<String> list){
char[][] twoDimenArray=null;
int maxLength=0;
for (String strings : list) {
if(maxLength<strings.length()){
maxLength=strings.length();
}
}
twoDimenArray=new char[maxLength][list.size()];
for (int i = 0; i < list.size(); i++) {
char[] charArray=list.get(i).toCharArray();
for (int j = 0; j < charArray.length; j++) {
twoDimenArray[j][i] = charArray[j];
}
}

return twoDimenArray;
}

//This method will return the char occurrences in the given char array
public static void numberOfCharactorsinString(char[] charArray,int count){

//Here we use set to identify unique chars in the char array
Set<Character> uniqueSet=new HashSet<Character>();
int forcount=0;
for (Character charVar : charArray) {
int occurent=1;

//check whether the searching char is not empty and not a space and not in previously counted
if( charVar!=Character.MIN_VALUE && charVar!=' ' && !uniqueSet.contains(charVar) && forcount<charArray.length){
uniqueSet.add(charVar);
for (int x=forcount+1;x<charArray.length;x++ ) {
if(charArray[x]==charVar){
occurent++;
}
}
System.out.println("The number of "+charVar+" in column "+(count+1)+" is "+occurent+".");
}
forcount++;
}
}
}

如果您提供的输入为(请注意,我在此处的第 4 行添加了额外的输入)

String1   ABCD
String2 BDD
String3 CDEF
String1 ABCD

输出结果如下

The number of A in column 1 is 2.
The number of B in column 2 is 3.
The number of C in column 3 is 3.
The number of D in column 3 is 1.
The number of D in column 4 is 4.
The number of E in column 5 is 1.
The number of F in column 6 is 1.

关于java - 如何计算多个字符串中某个字符出现的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41050447/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com