Въпрос относно задача от Mock Exam 2

Имам въпрос относно 3 задача от Java Mock Exam 2 . Към кого мога да се обърна за помощ ?

Добре дошли във форума Георги.Напишете вашия въпрос относно задача 2 Merging and Squashing от Java Mock Exam 2 и ще опитаме да помогнем.

Става въпрос за 3-та задача Word Anagrams. Получавам Limited Time Exceeded и всеки път различен резултат. Прилагам pastebin import java.util.Arrays;import java.util.List;import java.util.Scanner;imp - Pastebin.com

Здравейте Георги.Вместо да преобразувате входа и анаграмите в масиви от символи, можете да работите с тях директно като низове.
Вместо да премахвате символите един по един от думата, можете да създадете мап с честотата на символите в думата. След това за всяка анаграма можете да намалите броя на всеки символите в мапа. Ако мапа стане празен след обработката на дадена анаграма, това означава, че анаграмата е валидна .

Ето линк към този вариант с мап колекция :sunny:

1 Like

Може да оптимизираме вашето решение само с масиви :nerd_face: Списъкът List wordChars заменяме с char[] wordChars, за да се съхраняват символите на оригиналната дума.

Масивите Arrays.stream(word.split(“”)).collect(Collectors.toList()) заменяме с word.toCharArray(), за да се преобразува оригиналната дума в масив от символи.

WordChars.remove(анаграма[j]) се заменя с wordChars[index] = ‘\0’, за да се отбележат символите в оригиналната дума като използвани.

wordChars.isEmpty() е заменена с isWordEmpty(wordChars), за да се провери дали всички символи в оригиналната дума са използвани.

Добавяме два нови помощни метода findIndex(char[] arr, String target) и isWordEmpty(char[] arr) за извършване на необходимите операции върху масивите от символи.

Ето кода към този подход :ok_hand: charArrayApproach - Pastebin.com

1 Like

:exploding_head: :exploding_head: :exploding_head: Благодаря много за обясненията и отделеното време !

1 Like