Atcoder Begginer Contest 352のB問題について
Q&A
Closed
解決したいこと
Atcoder Begginer Contest 352のB問題について、エラーが出て正解となりません。どなたか知恵をお貸しください。
https://atcoder.jp/contests/abc352/tasks/abc352_b
問題については上のリンクを参照ください。
発生している問題・エラー
Main.cpp: In function ‘int main()’:
Main.cpp:20:17: warning: comparison of integer expressions of different signedness: ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
20 | if(T.size() == p){
| ~~~~~~~~~^~~~
該当するソースコード
#include<iostream>
#include<string>
using namespace std;
int main(){
string S;
string T;
cin >> S >> T;
int i = 0;
int p = 0;
int go = 1;
while(go){
if(S[i] == T[p]){//一致したら
cout << p + 1 ;//そのままpを出力すると-1ずれるので、+1する。
i = i + 1;//両方一つずらす
p = p + 1;
}
else{
p = p + 1;//一つずらし、後ろに一致する文字がないか探します
}
if(T.size() == p){//もしTの文字列を全て探索したのなら
go = 0;//ループをぬける
}
}
}
自分で試したこと
プログラム上の不備かと思い、
https://atcoder.jp/contests/abc352/tasks/abc352_b
の入力例をいくつか試しました。(次に出てくる例は入力例3のものです。)
しかし、
1,2,3,4,5,6,7番目の文字が正しく入力されている、と趣旨に沿った答えがきちんと出力できています。テストコードでは上手くいくのに、どうしてなのでしょうか。
解決
cout << p + 1 ;
cout << p + 1 << " ";
どうやら出力形式が間違っていました。空白を挿入すれば正しく動きました。
0