Ошибка времени выполнения для проблемы Каттиса (Java) (Проблема: объединение строк) - PullRequest
0 голосов
/ 26 мая 2020

Я не могу понять, почему я получаю ошибку времени выполнения по этой проблеме: https://open.kattis.com/problems/joinstrings

Проблема такова: вам дан набор из N строк, каждая строка проиндексирована (индексация на основе 1). Следующие операции put представляют собой входы N-1 двух целых чисел a и b в форме a b. Вы должны объединить строку индекса b со строкой индекса a, например:

5: please 8: help после ввода 8 5, строка индекса 8 станет helpplease, а строка индекс 5 становится (пустая строка).

В конце вы должны вывести всю объединенную строку из N строк.

Мое решение: я создаю собственный узел, который имеет Строковые атрибуты и указатель на следующий узел. Они инициализируются в HashMap с соответствующей строкой и нулевым узлом. Каждый раз, когда вызывается a b, я беру указатель в узле индекса a и указываю его на узел индекса b. В самом конце я рекурсивно просматриваю узлы, например LinkedList, распечатывая строку каждого узла.

Ниже приведен код, который я использовал, есть ли что-то, чего я не вижу?

import java.util.*;

public class JoinStrings {

    public static void main(String args[]) {

        Scanner sc = new Scanner(System.in);

        HashMap<Integer, StrNode> pointer = new HashMap<Integer, StrNode>();
        int n = sc.nextInt();

        for (int i = 0; i < n; i++) {
            pointer.put(i + 1, new StrNode(i+1, sc.next()));
        }

        int a = 0;
        int b = 0;
        for (int i = 0; i < n - 1; i++) {
            a = sc.nextInt();
            b = sc.nextInt();

            pointer.get(a).updateNext(pointer.get(b));
        }

        pointer.get(a).printString();
        System.out.println();

        sc.close();
    }
}

class StrNode {
    public int id;
    public String string;
    public StrNode next;

    public StrNode (int id, String string) {
        this.id = id;
        this.string = string;
        this.next = null;
    }

    public void updateNext(StrNode next) {
        if (this.next == null) this.next = next;
        else this.next.updateNext(next);
    }

    public void printString() {
        System.out.print(string);
        if (this.next != null) this.next.printString();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...