Разреженные массивы Hackerrank - PullRequest
0 голосов
/ 02 августа 2020
import java.io.*;
import java.util.*;

class Solution {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int nStrings = sc.nextInt();
        String entries[] = new String[nStrings];
        for (int i=0;i<nStrings;i++)
            entries[i] = sc.nextLine();

        sc.nextLine();

        int nQueries = sc.nextInt();
        String queries[] = new String[nQueries];
        for (int i=0;i<nQueries;i++)
            queries[i] = sc.nextLine();

        sc.nextLine();

        int result[] = new int[nQueries];
        for (int i=0;i<nQueries;i++)
            result[i] = 0;

        for (int i=0;i<nQueries;i++){
            for (int j=0;j<nStrings;j++){
                if (queries[i].equals(entries[j]))
                    result[i]++;
                else
                    continue;
            }
        }
        System.out.println(Arrays.toString(result));
    }
}

Может ли кто-нибудь помочь мне решить эту проблему, вывод не совсем правильный, но код кажется правильным. Кажется, что есть некоторая проблема при сравнении запросов и записей, из-за которой происходит обмен правильными элементами в конкретном индексе, т.е. для этого ввода

4
aba
baba
aba
xbxa
3
aba
xbxa
s

вывод [1, 2, 0], но он должно было быть [2,1,0]

1 Ответ

0 голосов
/ 02 августа 2020

Вы используете команду s c .nextLine (); на неправильных шагах ... Вы должны использовать ее сразу после s c .nextInt ();.

Приведенный ниже код пройдет все тестовые случаи ... после некоторых изменений в вашем коде.

import java.io.*;
import java.util.*;

class Solution {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int nStrings = sc.nextInt();
        sc.nextLine();
        String entries[] = new String[nStrings];
        for (int i=0;i<nStrings;i++)
            entries[i] = sc.nextLine();


        int nQueries = sc.nextInt();
        sc.nextLine();
        String queries[] = new String[nQueries];
        for (int i=0;i<nQueries;i++)
            queries[i] = sc.nextLine();

        int result[] = new int[nQueries];
        for (int i=0;i<nQueries;i++)
            result[i] = 0;



        for (int i=0;i<nQueries;i++){
            for (int j=0;j<nStrings;j++){
                if (queries[i].equals(entries[j]))
                    result[i]++;
            }
        }
        
        for(int i=0;i<nQueries;i++)
            System.out.println(result[i]);
    }
}
...