Имам въпрос относно 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
Здравейте Георги.Вместо да преобразувате входа и анаграмите в масиви от символи, можете да работите с тях директно като низове.
Вместо да премахвате символите един по един от думата, можете да създадете мап с честотата на символите в думата. След това за всяка анаграма можете да намалите броя на всеки символите в мапа. Ако мапа стане празен след обработката на дадена анаграма, това означава, че анаграмата е валидна .
Ето линк към този вариант с мап колекция
Може да оптимизираме вашето решение само с масиви Списъкът 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) за извършване на необходимите операции върху масивите от символи.
Ето кода към този подход charArrayApproach - Pastebin.com
Благодаря много за обясненията и отделеното време !