2つの文字列の最短距離の計算
7601 ワード
2文字列の最短距離の計算(C++)
【問題の説明】キーボードから2組の英字(大文字と小文字の英字を含む)を入力します.各組の英字には重複文字がなく、それぞれ小文字に変換され、2つの配列aとbに格納されます.英字表に基づいて、a配列とb配列の中で英字表の中で最も近い2つの英字の距離を出力してください.【入力形式】入力は2行の英字を含み、大文字と小文字があり、各行10要素を超えない【出力形式】整数を出力し、2つの配列の中で最も近い2つの英字の距離を表し、2つのアルファベットが同じであれば0【サンプル入力】を出力する
abxy
cAzzp
【サンプル出力】0
【サンプル入力】
aBc
deF
【サンプル出力】1
【サンプル入力】
xYzy
deFac
【サンプル出力】18
【問題の説明】キーボードから2組の英字(大文字と小文字の英字を含む)を入力します.各組の英字には重複文字がなく、それぞれ小文字に変換され、2つの配列aとbに格納されます.英字表に基づいて、a配列とb配列の中で英字表の中で最も近い2つの英字の距離を出力してください.【入力形式】入力は2行の英字を含み、大文字と小文字があり、各行10要素を超えない【出力形式】整数を出力し、2つの配列の中で最も近い2つの英字の距離を表し、2つのアルファベットが同じであれば0【サンプル入力】を出力する
abxy
cAzzp
【サンプル出力】0
【サンプル入力】
aBc
deF
【サンプル出力】1
【サンプル入力】
xYzy
deFac
【サンプル出力】18
#include
using namespace std;
//
int minx(int min,string str1,string str2){
int length1=str1.length();
int length2=str2.length();
min=abs(str1[0]-str2[0]);
for(int i=0;i<length1;i++){
for(int j=0;j<length2;j++){
if(abs(str1[i]-str2[j])<min){
min=abs(str1[i]-str2[j]);
}
}
}
return min;
}
//
void tostring(string &str){
int i=0;
int length=str.length();
while(i<length){
if(str[i]>='A'&&str[i]<='Z'){
str[i]=str[i]+32;
}
i++;
}
}
int main(){
string str1,str2;
int min;
cin>>str1;
cin>>str2;
tostring(str1);
tostring(str2);
min=minx(min,str1,str2);
cout<<min;
}