Hallo allerseits (wer nach dem Wettbewerb Guten Abend!) Ist Rute!
AtCoder-Anfängerwettbewerb 177 B Problem </ b> beginnt gleich! Die Erklärung der Probleme A und C finden Sie unter den folgenden Links. Überprüfen Sie dies bitte! !!
Ein Problem | B Problem | C Problem |
---|---|---|
in Vorbereitung | Dieser Beitrag | in Vorbereitung |
Schreiben Sie einige Zeichen in $ S $ neu, sodass die Zeichenfolge $ T $ zu einem Teilstring </ b> von $ S $ wird. Zumindest wie viele Zeichen müssen neu geschrieben werden. Der Teilstring </ b> bezieht sich hier auf einen kontinuierlichen Teilstring. Beispiel) "xxx" ist ein Teilstring von "yxxxy", aber kein Teilstring von "xxyxx". </ font>
Problem-URL: https://atcoder.jp/contests/abc177/tasks/abc177_b
・ $ S $, $ T $ ist $ 1 $ oder mehr und $ 1000 $ oder weniger ・ Die Länge von $ T $ ist kleiner als die Länge von $ S $ ・ $ S und T $ enthalten nur Kleinbuchstaben
Ruft den Teilstring von $ S $ ab, der dieselbe Länge wie der Teilstring $ T $ hat.
Die Anzahl der Teilzeichenfolgen(
Finden Sie für diese Zeichenfolgen heraus, wie viele Zeichen mit der Zeichenfolge $ T $ übereinstimmen.
Nachfolgend finden Sie Beispiele für Antworten in jeder Sprache (Python 3.C ++, Java). (Stand 22:26: Java-Antwortbeispiel wurde nicht erstellt, daher werde ich ein Antwortbeispiel in Python3, Java zeigen.)
{ABC177B.py}
s = input()
t = input()
ls = []
for i in range(len(s) - len(t) + 1):
ls.append(s[i:i+len(t)])
now = 0
minimum = len(t)
for i in range(len(ls)):
now = 0
for j in range(len(t)):
if t[j] == ls[i][j]:
now += 1
if len(t) - now < minimum:
minimum = len(t) - now
print(minimum)
Zeichenfolge
mit Zeichenfolge [Startindex: Endindex + 1]
extrahieren.{ABC177B.cpp}
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
string t;
//String s,empfange t
cin >> s >> t;
vector<string> ls(s.size()-t.size()+1);
// |s|-|t| +Erstellen Sie ein String-Array der Größe 1.
//Zählen Sie Teilzeichenfolgen auf und fügen Sie sie in das Array ls ein
for (int i = 0; i < s.size()-t.size()+1; i++){
ls.at(i) = s.substr(i,t.size());
}
int now = 0; //Anzahl der gleichen Zeichen
int minimum = t.size(); //Antwort auf Ausgabe
for (int i = 0; i < s.size()-t.size()+1; i++){
now = 0; //Initialisieren
for (int j = 0; j < t.size(); j++){
if (t.at(j) == ls.at(i).at(j)){
now++;
}
}
if (t.size() - now < minimum){
// |t| -Aktualisieren, wenn jetzt weniger als das Minimum ist
minimum = t.size() - now;
}
}
//Ausgangsminimum
cout << minimum << endl;
}
in Vorbereitung
Dies ist ein Problem der Zeichenfolgenverarbeitung, aber das folgende Problem gilt für das neueste B-Problem.
ABC172B Minor Change ★ Das Problem ähnelt diesem </ b> ABC159B String Palindrome Frage i zur Verarbeitung von Zeichenketten, aber ich denke, es ist ein wenig schwierig. ABC152B Comparing Strings ★ Schwierigkeitsgrad 11 ist eine einfache Kategorie unter den Problemen bei der Zeichenfolgenverarbeitung. Lassen Sie uns diese Gelegenheit nutzen, um es zu lösen.
Dies schließt die Erklärung des B-Problems </ b> ab. Als nächstes folgt die Erklärung des C-Problems </ b>! !!