阵列的工作结构。 Java

时间:2019-05-18 16:17:33

标签: java arrays binary-search

我正在尝试解决字符串中的问题,在字符串中找到匹配的字符。 我使用字符数组和内部循环来解决它,但是我认为它具有更多的时间复杂性。因此,尝试在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。

1 个答案:

答案 0 :(得分:1)

问题在于,一旦您在循环中更新teamB数组,该数组便不再排序。在未排序的数组中,二进制搜索将提供意外的输出。