c++で文字列の長さを比較
atcoderで勉強していて、コードテストしても正しい出力が得られなかった。エラーは出ず。原因がなかなか分からなかったので、記事にして防備録です。
文字列A、Bを入力して、長い方の文字列を出力するというもの。
最初に書いたコードがこちら。
#include <bits/stdc++.h>
using namespace std;
int main() {
string A, B;
cin >> A >> B;
if ( A.size() - B.size() > 0 ) {
cout << A << endl;
} else {
cout << B << endl;
}
return 0;
}
入力値
abcde
abcdefghi
出力値
abcde
となった。長い方の文字列が出力されなかった。
解決方法
if ( A.size() - B.size() > 0 ) の部分を明確にした。
A.size() - B.size() と 0 を比較しているけど、A.size() - B.size()の型を明示していないので、もしかするとこれが原因でちゃんと比較できてないのかもと考えた。
int L = A.size() - B.size(); とint型で明示してL > 0を比較したら、ちゃんと期待した通りの出力が得られて、提出したコードも正解となった。
まとめ
ちょっとしたところも、ちゃんと型宣言をしたほうが良さげ。
という教訓が得られました。
この記事が気に入ったらサポートをしてみませんか?