Loading...
vlastomar avatar vlastomar 16 Точки

Задача "Mirror Words"

Здравейте,

На следната задача дадените тестове ми излизат ама Judge не е доволен. Ако някой помогне , благодаря предварително.

Моят код: https://pastebin.com/whNaQN5a

Задачата:

The SoftUni Spelling Bee competition is here. But it`s not like any other Spelling Bee competition out there, it`s different and a lot more fun! You, of course, are a participant and you are eager to show the competition that you are the best, so go ahead, learn the rules and win!

On the first line of the input you will be given a text string. In order to win the competition you have to find all hidden word pairs, read them and mark the ones that are mirror images of each other.

First of all you have to extract the hidden word pairs. Hidden word pairs are:

  • Surrounded by "@" or "#" (only one of the two) in the following pattern #wordOne##wordTwo# or @wordOne@@wordTwo@
  • At least 3 characters long each (without the surrounding symbols)
  • Made up of letters only

If the second word, spelled backwards is the same as the first word and vice versa (casing matters!), then they are a match and you have to store them somewhere. Examples of mirror words:

#Part##traP# @leveL@@Level@ #sAw##wAs#

  • If you don`t find any valid pairs print: "No word pairs found!"
  • If you find valid pairs print their count: "{valid pairs count} word pairs found!"
  • If there are no mirror words print: "No mirror words!"
  • If there are mirror words print:

"The mirror words are:”

{wordOne} <=> {wordtwo}, {wordOne} <=> {wordtwo}, {wordOne} <=> {wordtwo}, etc…"

Input / Constraints

  • You will recive a string.

Output

  • Print the proper output messages in the proper cases as described in the problem description.
  • If there are pairs of mirror words, print them in the end, each pair separated by ", ".
  • Each pair of mirror word must be printed with " <=> " between the words.

Examples

Input

@mix#tix3dj#poOl##loOp#wl@@bong&song%4very$long@thong#Part##traP##@@leveL@@Level@##car#rac##tu@pack@@ckap@#rr#sAw##wAs#r#@w1r 

Output

Comments

5 word pairs found!

The mirror words are:

Part <=> traP, leveL <=> Level, sAw <=> wAs

There are 5 green and yellow pairs that meet all requirements and thus are valid.

#poOl##loOp# is valid and looks very much like a mirror words pair but it isn`t because the casings don`t match.

#car#rac# “rac” spelled backwards is "car" but this is not a valid pair because there is only one "#" between the words.

@pack@@ckap@ is also valid but "ckap" backwards is "pakc" which is not the same as "pack", so they are not mirror words.

Input

#po0l##l0op# @bAc##cAB@ @LM@ML@ #xxxXxx##xxxXxx# @aba@@ababa@

Output

Comments

2 word pairs found!

No mirror words!

"xxxXxx" backwards is not the same as "xxxXxx"

@aba@@ababa@ is a valid pair but the word lengths are different, thus these are definitely not mirror words

Input

#lol#lol# @#God@@doG@# #abC@@Cba# @Xyu@#uyX#

Output

Comments

No word pairs found!

No mirror words!

 

Тагове:
0
Java Fundamentals
vlastomar avatar vlastomar 16 Точки

Здравейте,

Открих си сам грешката.

Въпреки всичко благодаря на тези които провериха задачата.

 

1
Hristeto avatar Hristeto 1 Точки

ако някой може да помогне judge дава 90/100

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

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

        String text = sc.nextLine();
        Map<String, String> mirror = new LinkedHashMap<>();
        String regex = "(@|#)(?<one>[A-Za-z]{3,})(\\1)(\\1)(?<two>[A-Za-z]{3,})(\\1)";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);
        int count = 0;

        while (matcher.find()) {
            count++;
            String one = matcher.group("one");
            String two = matcher.group("two");

            two = reverse(two);
            if (one.equals(two)) {
                mirror.put(matcher.group("one"), matcher.group("two"));
            }
        }
        if (count > 0) {
            System.out.println(count + " word pairs found!");
        }else {
            System.out.println("No word pairs found!");
        }
        if (mirror.size() > 0) {
            System.out.println("The mirror words are:");
            int[] counter = {1};
            mirror
                    .entrySet()
                    .forEach(f -> {
                        System.out.print(String.format("%s <=> %s", f.getKey(), f.getValue()));
                        if (counter[0] < mirror.size()) {
                            System.out.print(", ");
                        }
                        counter[0]++;
                    });

        } else {
            System.out.println("No mirror words!");
        }

    }

    private static String reverse(String two) {
        StringBuilder sb = new StringBuilder();
        sb.append(two);
        sb.reverse();
        return sb.toString();
    }
}
0
02/08/2020 18:40:20
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.