题意:
给出一个字母分布图,如果两个字符串对应位置的字母全都相等,字符串属性为 1 1 1 ,否则若两个字符串对应位置字母均相邻或相等,字符串属性为 2 2 2,否则字符串属性为 3 3 3. 现给出两个字符串,问这两个字符串的属性。
对于情况 2 2 2 ,就是相差 1 , 8 , 9 , 10 1,8,9,10 1,8,9,10 这些位置的可以其他的不行,看看表就知道了。
AC代码:
const int N = 1e5 + 10;
int n, m, d;
int main()
{
int t;
sd(t);
while (t--)
{
string s1, s2;
cin >> s1;
cin >> s2;
int len1 = s1.size();
int len2 = s2.size();
if (s1 == s2)
{
puts("1");
continue;
}
if (len1 != len2)
{
puts("3");
continue;
}
bool flag = 1;
rep(i, 0, len1 - 1)
{
if (s1[i] == s2[i])
continue;
if (s1[i] == s2[i] - 1 || s1[i] == s2[i] + 1 || s1[i] == s2[i] + 9 || s1[i] == s2[i] - 9 || s1[i] == s2[i] + 8 || s1[i] == s2[i] - 8 || s1[i] == s2[i] + 10 || s1[i] == s2[i] - 10)
continue;
else
{
flag = 0;
break;
}
}
if (flag)
puts("2");
else
puts("3");
}
return 0;
}