C++ブルーブリッジカップ基礎練習の文字列比較


C++ブルーブリッジカップテーマ解説まとめ(継続更新)
VIP試験問題文字列比較
リソースの制限
時間制限:1.0 sメモリ制限:512.0 MB
問題の説明
大文字または小文字のみからなる2つの文字列(長さ1~10)を指定します.これらの関係は、次の4つのいずれかです.1:2つの文字列の長さが等しくありません.例えばBeijingとHebei 2:2つの文字列は長さが等しいだけでなく、対応する位置の文字は完全に一致しています(大文字と小文字を区別します)、例えばBeijingとBeijing 3:2つの文字列の長さが等しく、対応する位置の文字は大文字と小文字を区別しない前提でのみ完全に一致します(つまり、状況2を満たしていません).たとえばbeijingとBEIjing 4:2つの文字列の長さは等しいが、大文字と小文字を区別しなくても2つの文字列を一致させることはできない.たとえばBeijingとNanjingプログラミングは,入力された2つの文字列間の関係がこの4つのクラスのどのクラスに属するかを判断し,属するクラスの番号を与える.
入力フォーマット
2行を含め、各行は1文字列です.
出力フォーマット
この2つの文字列の関係番号を示す数値は1つしかありません.
サンプル入力
BEIjing
beiJing
サンプル出力
3
構想
この問題に対して、第1の反応は、大文字と小文字の比較を遍歴することであり、等しくなく、大文字と小文字の変換後が異なる限り、4,breakに違いないが、他の状況については、等しい場合は遍歴を継続し、逆に大文字と小文字の変換後が等しいかどうかを比較する必要がある.
大文字と小文字を比較するには、いくつかの方法があります.
  • ASCII値を比較すると,'A'は65,'a'は97であるため,a[i]-65またはa[i]-97はb[i]と等しいものが1つあれば大文字と小文字が異なる
  • を表す.
  • #include char文字では、toupper()、tolower()を使用して、大文字と小文字の変換をそれぞれ表すことができます.たとえば、小文字tolower(a[i])=tolower(b[i])
  • stringクラスでは、**#include**を使用して文字列aを小文字transform(a.begin()、a.end()、a.begin():tolowerに変換します.文字列bを小文字transform(b.begin()、b.end()、b.begin()::tolower);文字列全体を大文字と小文字の一致に変換する方法
  • です.
    コード#コード#
    #include
    #include
    using namespace std;
    
    int main(){
    	string a,b;
    //	cout<
    	cin>>a>>b;
    	int flag=2;
    	int n=a.length();
    	if (a.length()!=b.length()) cout<<1<<endl;
    	
    	else{
    		for (int i=0;i<n;i++){
    			if (a[i]!=b[i]&& tolower(a[i])!=tolower(b[i])){
    				flag=4;
    				break;
    			}
    			else if (a[i]!=b[i] && tolower(a[i])==tolower(b[i])) flag=3;
    		}
    		cout<<flag;
    	}
    	
    	return 0;
    }