Професионална програма
Loading...
abetterman avatar abetterman 21 Точки

Две! грешки в условието на задача 3.Take/Skip Rope от More Exercises: Lists

Часове ми бяха необходими, докато намеря грешките!

1ва Грешка в изречението " Afterwards, iterate over both of the lists and skip {skipCount} characters from the non-numbers list, then take {takeCount} characters and store it in a result string. "  
Обратното е. take {takeCount} characters and store it in a result string, then skip {skipCount} characters from the non-numbers list
То така е показано и в примерите по-долу, че първо вземаме символи и тогава skip-ваме.

2ра Грешка. В главния пример на задачата има стринг "skipTest_String044170" . Предпоследния символ трябва да е шест, а не седем.

Трябва да е skipTest_String044160 , защото думата String има 6 символа, а не 7.

 

Тагове:
0
Fundamentals Module
mitkomik avatar mitkomik 13 Точки
Може и без метода, но бях тръгнал в друга посока и впоследствие ме домързя да го махна:)
Така я видях аз тази задача. 100/100 Judge.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class TakeSkipRope14_01_03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        List<Character> numbers = new ArrayList<>();
        List<Character> characters = new ArrayList<>();
        for (int i = 0; i < input.length(); i++) {

            if (input.charAt(i) >= 48 && input.charAt(i) <= 57) {
                numbers.add(input.charAt(i));
            } else {
                characters.add(input.charAt(i));
            }
        }
        List<Integer> takeList = new ArrayList<>();
        List<Integer> skipList = new ArrayList<>();
        for (int i = 0; i < numbers.size(); i++) {
            int numToAdd = Character.getNumericValue(numbers.get(i));
            if (i % 2 == 0) {
                takeList.add(numToAdd);
            } else {
                skipList.add(numToAdd);
            }
        }
        String string = characters.toString()
                .substring(1, 3 * characters.size() - 1)
                .replaceAll(", ", "");

        takePartsOfString(string, takeList, skipList);

    }

    private static void takePartsOfString(String string, List<Integer> takeList, List<Integer> skipList) {
        StringBuilder newString = new StringBuilder();
        for (int i = 0; i < takeList.size(); i++) {
            int take = takeList.get(i);
            for (int j = 0; j < take; j++) {
                if (string.length() == 0) {
                    break;
                }
                newString.append(string.charAt(0));
                string = string.substring(1);
            }

            for (int j = 0; j < skipList.get(i); j++) {

                if (string.length() == 0) {
                    break;
                }
                string = string.substring(1);
            }
        }
        System.out.println(newString);
    }
}
0
JsDSU avatar JsDSU 3 Точки

Качвам едно решение за Java ---> https://pastebin.com/Vv2Qbznp без substring.

Считам, че така е много по-лесно за разбиране кога се премахват елементите и кога се добавят. Написано по този начин отговаря на текущите лекции с използване на методи и листи, което би следвало да е идеята за упражнение на получените познания.

 Успех!

0
03/03/2021 13:16:27