Професионална програма
Loading...
+ Нов въпрос
Svilen12 avatar Svilen12 3 Точки

Задача Password Reset на java

Здравейте, имам проблем със една задача и не знам къде ми е грешката, judge ми дава 91/100. Задачата е от Fundamentals final exam 04.04.2020.

https://pastebin.com/Yb0eE7f8-моето решения

https://judge.softuni.bg/Contests/Practice/Index/2303#0- и задачата

Ще се радвам, ако някой открие къде ми е грешката :)

Тагове:
0
Fundamentals Module
MartinBG avatar MartinBG 3828 Точки

По условие командата Cut трябва да изтрие конкретна част от текста, докато решението ще изтрие всички съвпадения. Например при парола AtestBtest и команда Cut 6 4 трябва да получим AtestB, но програмата ще върне AB

Мога да дам готово решение, но ще е най-добре сам да го оправите.  

0
02/12/2020 17:13:25
Svilen12 avatar Svilen12 3 Точки

Благодаря за отговора, намерих го. Това е решението ми, струва ми се обаче, че не е най-оптималното, но дава 100/100.

https://pastebin.com/DEX1FTDR

1
MartinBG avatar MartinBG 3828 Точки

@Svilen12

Това е решението с малко рефакторинг.

Старал съм се да не използвам неща, които не са учени:

import java.util.Scanner;

public class PasswordReset {

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

        String input;
        while (!"Done".equals(input = scanner.nextLine())) {
            String[] commands = input.split(" ");
            switch (commands[0]) {
            case "TakeOdd":
                StringBuilder newPassword = new StringBuilder();
                for (int i = 1; i < password.length(); i += 2) {
                    newPassword.append(password.charAt(i));
                }
                password = newPassword.toString();
                System.out.println(password);
                break;
            case "Cut":
                int start = Integer.parseInt(commands[1]);
                int end = start + Integer.parseInt(commands[2]);
                password = new StringBuilder(password)
                        .delete(start, end).toString();
                System.out.println(password);
                break;
            case "Substitute":
                String target = commands[1];
                String replacement = commands[2];
                if (password.contains(target)) {
                    password = password.replace(target, replacement);
                    System.out.println(password);
                } else {
                    System.out.println("Nothing to replace!");
                }
                break;
            }
        }

        System.out.println("Your password is: " + password);
    }
}

 

0
Svilen12 avatar Svilen12 3 Точки

Благодаря :)

1