我正在尝试解决字符串中的问题,在字符串中找到匹配的字符。 我使用字符数组和内部循环来解决它,但是我认为它具有更多的时间复杂性。因此,尝试在Arrays二进制搜索中解决该问题,但结果却不合适。我想要Java中二进制搜索方法的工作结构。
我在字符串2中设置了匹配的值来复制字符'#',因为不想匹配另一个字符。
public static void main(String[] args) {
Scanner s= new Scanner(System.in);
String team1 = s.next();
String team2 = s.next();
char[] teamA = team1.toCharArray();
char[] teamB = team2.toCharArray();
Arrays.sort(teamB);
int count = 0;
for(int a=0;a< teamA.length;a++) {
int index = Arrays.binarySearch(teamB, teamA[a]);
if(index >= 0) {
count++;
teamB[index] = '#';
}
}
System.out.println(count);
}
如果我输入两个字符串 “ aabc”和“ zbaa”的预期输出为3 但是我的程序输出为2。
答案 0 :(得分:1)
问题在于,一旦您在循环中更新teamB
数组,该数组便不再排序。在未排序的数组中,二进制搜索将提供意外的输出。