Рабочая структура массивов. Метод binarySearch () в Java - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь решить проблему в строках, находя совпадающие символы в строке. Я решаю это, используя Character Array и внутренний цикл, но я думаю, что это требует больше времени. поэтому попробуйте решить эту проблему в бинарном поиске по массивам, но это приведет к неуместному результату. Мне нужна рабочая структура метода бинарного поиска в Java.

Я установил совпадающее значение во второй строке для дублирования символа '#', потому что не хочу совпадать с другим символом.

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 Ответ

1 голос
/ 18 мая 2019

Проблема в том, что после обновления массива teamB в цикле массив больше не сортируется. А в несортированном массиве бинарный поиск даст неожиданные результаты.

...