Advertisement
Ligh7_of_H3av3n

03. Take/Skip Rope

Feb 13th, 2024
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.89 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import java.util.Scanner;
  5.  
  6. public class Main {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         String textChain = scanner.nextLine();
  11.         List<Character> nonNumbers = new ArrayList<>();
  12.         List<Integer> numbers = new ArrayList<>();
  13.  
  14.         // Step 1: Extract digits and non-digits
  15.         for (char c : textChain.toCharArray()) {
  16.             if (Character.isDigit(c)) {
  17.                 numbers.add(Character.getNumericValue(c));
  18.             } else {
  19.                 nonNumbers.add(c);
  20.             }
  21.         }
  22.  
  23.         // Step 2: Separate take and skip lists
  24.         List<Integer> take = new ArrayList<>();
  25.         List<Integer> skip = new ArrayList<>();
  26.         for (int i = 0; i < numbers.size(); i++) {
  27.             if (i % 2 == 0) {
  28.                 take.add(numbers.get(i));
  29.             } else {
  30.                 skip.add(numbers.get(i));
  31.             }
  32.         }
  33.  
  34.         // Step 3: Construct the result string
  35.         StringBuilder result = new StringBuilder();
  36.         int nonNumIndex = 0;
  37.         for (int i = 0; i < take.size(); i++) {
  38.             int takeCount = take.get(i);
  39.             int skipCount = skip.get(i);
  40.             if (takeCount == 0) {
  41.                 result.append("");
  42.             } else {
  43.                 for (int m = 0; m < takeCount; m++) {
  44.                     if (nonNumIndex >= nonNumbers.size()) {
  45.                         break;
  46.                     }
  47.                     result.append(nonNumbers.get(nonNumIndex++));
  48.                 }
  49.             }
  50.             for (int j = 0; j < skipCount; j++) {
  51.                 if (nonNumIndex >= nonNumbers.size()) {
  52.                     break;
  53.                 }
  54.                 nonNumIndex++;
  55.             }
  56.         }
  57.  
  58.         System.out.println(result.toString());
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement