Сравнить и распечатать - PullRequest
       17

Сравнить и распечатать

0 голосов
/ 22 января 2020

Нужна помощь с этой задачей. Как я могу сравнить строку два и строку три, где строка три должна быть обратной, офлайн, строка 2 для успешной печати?

input:

Первая строка вход содержит одно целое число 1≤?≤20. Каждая из двух следующих строк содержит строку, содержащую только символы 0 и 1. Первая из этих строк представляет биты файла перед удалением, а вторая - биты в той же позиции на жестком диске после удаления файла. Длина этих строк одинакова и составляет от 1 до 1000 символов.

output:

Вывести одну строку, содержащую либо слова «Удаление успешно завершено», если каждый бит переключается ? раз или «Ошибка удаления», если это не так.

Таким образом, вход будет выглядеть примерно так:

1
10001110101000001111010100001110
01110001010111110000101011110001

, и если строка вторая и три одинаковые (только третья строка перевернута из второй строки), тогда o utput будет:

Deletion succeeded

, если input это:

 20
 0001100011001010
 0001000011000100

Если вторая и третья строки не совпадают, то вывод будет:

Deletion failed

Обратите внимание, что первая строка может состоять только из цифр от 1 до 20 и строки два и три только из строки с 1 и 0.

Вот что у меня есть:

import java.util.Scanner;

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

        int level = sc.nextInt();
             if (level >= 1 && level <= 20) {
                System.out.println(level);
         }

        String reverse = "";
        String validering;

        String line1 = sc.next();

        String line2 = sc.next();

        // Reverse
        for(int i = line1.length() - 1; i >= 0; i--)
        {
            reverse = reverse + line1.charAt(i);
        }
            System.out.print(reverse);

        if (line1.equals(reverse)) {
            System.out.println("Deletion succeeded");
        }
        else if (!line1.equals(reverse)) {
            System.out.println("Deletion failed");
          }
      }
  }

1 Ответ

0 голосов
/ 22 января 2020

По словам Каттиса Стереть безопасно , вы не должны переворачивать строку. Вы должны сравнить биты один за другим, чтобы увидеть, были ли биты перевернуты. Так что если String1 = "0" и N = 1, то String2 должно быть "1". Если N = 2 (дважды), то String2 должно быть "0". Это идентично String1.

Таким образом, вы можете начать с проверки четности N. Если это так, то «Удаление завершено успешно» будет применяться, если String1 совпадает с String2.

Если N нечетно, вам нужно l oop над символами в строке и проверить, если string1.charAt(i) совпадает с string2.charAt(i). Если они совпадают, то «Ошибка удаления».

Задача на сайте - сделать это менее чем за секунду. Для этого я бы, вероятно, попытался загрузить значения с помощью Long.valueOf(64BitAtTime, 2) и использовать Exclusive OR, но я предполагаю, что это не ваша цель.

...