Salut à tous (qui après le concours Bonsoir!) C'est Rute!
Concours pour débutants AtCoder 177 B Le problème </ b> est sur le point de commencer! Vous pouvez voir l'explication des problèmes A et C à partir des liens ci-dessous, veuillez donc vérifier! !!
Un problème | Problème B | Problème C |
---|---|---|
en préparation | Cet article | en préparation |
Réécrivez certains caractères dans $ S $ pour que la chaîne $ T $ devienne une sous-chaîne </ b> de $ S $.
Au moins combien de caractères devront être réécrits.
La sous-chaîne </ b> fait ici référence à une sous-chaîne continue.
Exemple) 'xxx
' est une sous-chaîne de'yxxxy'
, mais pas une sous-chaîne de
xxyxx'`. </ font>
URL du problème: https://atcoder.jp/contests/abc177/tasks/abc177_b
・ $ S $, $ T $ est de 1 $ ou plus et de 1000 $ ou moins ・ La longueur de $ T $ est inférieure ou égale à la longueur de $ S $ ・ $ S et T $ n'incluent que des lettres minuscules
Obtient la sous-chaîne de $ S $ qui a la même longueur que la sous-chaîne $ T
Pour ces chaînes, découvrez combien de caractères correspondent à la chaîne $ T $.
Vous trouverez ci-dessous des exemples de réponses dans chaque langage (Python 3.C ++, Java). (À partir de 22:26: l'exemple de réponse Java n'a pas été créé, je vais donc montrer un exemple de réponse en Python3, Java)
{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)
chaîne de caractères
avec chaîne de caractères [index de début: index de fin + 1]
.{ABC177B.cpp}
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
string t;
//Chaîne s,recevoir t
cin >> s >> t;
vector<string> ls(s.size()-t.size()+1);
// |s|-|t| +Créez un tableau de chaînes de taille 1.
//Énumérer les sous-chaînes et insérer dans le tableau ls
for (int i = 0; i < s.size()-t.size()+1; i++){
ls.at(i) = s.substr(i,t.size());
}
int now = 0; //Nombre de mêmes caractères
int minimum = t.size(); //Réponse à la sortie
for (int i = 0; i < s.size()-t.size()+1; i++){
now = 0; //Initialisation
for (int j = 0; j < t.size(); j++){
if (t.at(j) == ls.at(i).at(j)){
now++;
}
}
if (t.size() - now < minimum){
// |t| -Mettre à jour si maintenant est inférieur au minimum
minimum = t.size() - now;
}
}
//Sortie minimum
cout << minimum << endl;
}
en préparation
Bien qu'il s'agisse d'un tel problème de traitement de chaîne de caractères, le problème suivant s'applique au dernier problème B.
ABC172B Changement mineur ★ Le problème est similaire à celui-ci </ b> ABC159B String Palindrome Question i du traitement des chaînes de caractères, mais je pense que c'est un peu difficile. ABC152B Comparing Strings ★ La difficulté 11 est une catégorie simple parmi les problèmes de traitement des chaînes. Profitons de cette occasion pour le résoudre.
Ceci conclut l'explication du problème B </ b>. Vient ensuite l'explication du problème C </ b>! !!
Recommended Posts