我的代码解:
#include<iostream>
#include<map>
#include<string>
using namespace std;
string reverseString(string str) {
string reversedStr = str;
int left = 0;
int right = str.length() - 1;
while (left < right) {
swap(reversedStr[left], reversedStr[right]);
left++;
right--;
}
return reversedStr;
}
int main() {
/*
长度只可能有两种情况:为1, 不为1,其中长度为1的线段只有AB,BC,CD,DE,AE及其翻转共10种情况
先将AB,BC,CD,DE,AE=1用map存起来
在将输入的S和T首先判断需不需要翻转
最后再将改线段与map里面的对比,看两个是否为1
*/
string S, T;
cin >> S >> T;
map<string, int> m;
m.insert(make_pair("AB", 1));
m.insert(make_pair("BC", 1));
m.insert(make_pair("CD", 1));
m.insert(make_pair("DE", 1));
m.insert(make_pair("AE", 1));
if (S[0] > S[1]) {
S = reverseString(S);
}
if (T[0] > T[1]) {
T = reverseString(T);
}
int n1 = -1, n2 = -1;
if (m.find(S) != m.end()) {//证明S长度为1
n1 = 1;
}
if (m.find(T) != m.end()) {//证明T长度为1
n2 = 1;
}
if (n1 == n2) {
cout << "Yes";
}
else {
cout << "No";
}
}