AtCoder Anfängerwettbewerb 167 Ein Problem "Registrierung" Erklärung (Python3, C ++, Java)

AtCoder Beginner Contest 167 A Ich werde das Problem "Registrierung" erklären.

Problem-URL: https://atcoder.jp/contests/abc167/tasks/abc167_a

Problemzusammenfassung

Angesichts der Zeichenfolgen $ S $, $ T $. Bestimmen Sie, ob $ T $ eine Zeichenfolge ist, bei der ein Zeichen am Ende von $ S $ hinzugefügt wird.

Ja wenn $ T $ die Bedingungen erfüllt Wenn die Bedingungen nicht erfüllt sind, geben Sie "Nein" aus.

Zwang

・ $ S und T $ sind niedrigere alphabetische Zeichenfolgen ・1 \leq |S| \leq 10|T| = |S| + 1

Kommentar

StringTÜber,|S|Bis zum BriefScheibeUnd es istSSie müssen nur feststellen, ob es gleich ist. Hier bezieht sich Slice </ b> auf einen Teil der Zeichenfolge.

Wie man Scheiben bekommt

In Python3 können Sie T [i: j + 1] verwenden, um das Slice </ b> vom $ i $ -Zeichen zum $ j $ -Zeichen von $ T $ zu erhalten. (beachten Sie, dass es sich hier um einen 0-Index handelt) </ font>

[Spalte] Was sind 0-Index und 1-Index? </ font>

Auf Computern beginnen Nummernzähler bei 0 statt bei 1. Die Zeichenfolgen, die wir verarbeiten, werden also vom ersten Zeichen für uns, aber vom 0. Zeichen für den -Computer gezählt. </ b> Die Methode zum Zählen von computerähnlichen Arrays (einschließlich Zeichenfolgen) wird als 0-Index </ b> bezeichnet. Andererseits wird die Art und Weise, wie wir normalerweise Sequenzen zählen, als 1-Index </ b> bezeichnet. Beachten Sie, dass es in Zukunft häufig in den Erläuterungen verwendet wird.

Kommen wir zurück zum Hauptthema. In C ++ können Sie "T.strstr (i, j)" verwenden, um Slices </ b> von $ j $ Zeichen aus dem $ i $ -ten von $ T $ zu erhalten. (i ist 0-Index) In Java kann "T.string (i, j + 1)" verwendet werden, um Slices </ b> von $ i $ th bis $ j $ th von $ T $ zu erhalten. (i, j sind 0-Index)

Mit diesen Funktionen können Sie ein Slice von $ T $ abrufen und feststellen, ob es mit $ S $ identisch ist.

Nachfolgend finden Sie Beispiele für Antworten in Python3, C ++ und Java.

Beispiel für eine Antwort für jede Sprache

Beispiellösung in Python3

{ABC167A.py}


S = input()
T = input()
if T[0:len(S)] == S:
  print("Yes")
else:
  print("No")
Lösungsbeispiel in C ++

{ABC167A.cpp}


#include<bits/stdc++.h>
using namespace std;
int main(){
  string S,T;
  cin >> S >> T;
  string Judge = T.substr(0,S.size());
  if (Judge == S){
    cout << "Yes" << endl;
  }else{
    cout << "No" << endl;
  }
}
Java-Antwortbeispiel

{ABC167A.java}


import java.util.Scanner;
public class Main{
  public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    String S = scan.nextLine();
    String T = scan.nextLine();
    String judge = T.substring(0,S.length());
    if (judge == S){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }
  }
}

Wenn ich diesen Code ausführe, erhalte ich tatsächlich WA </ font>. Weißt du warum (wenn du weißt)?

Wenn Sie den Grund wissen möchten, überprüfen Sie es bitte.

Der richtige Antwortcode lautet wie folgt.

{ABC167A_AC.java}


import java.util.Scanner;
public class Main{
  public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    String S = scan.next();
    String T = scan.next();
    String judge = T.substring(0,S.length());
    if (S.equals(judge)){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }
  }
}

Recommended Posts