字符交换
小欧的字符交换
小欧拿到了两个长度相等的字符串ss和tt。她想知道能否交换ss中两个相邻的字符,使得ss和tt相等?请注意,最多只有1次交换的机会!
一共有tt组询问。
一共有tt组询问。
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
输入描述:
第一行输入一个正整数
,代表询问次数。
每组输入两行仅包含小写字母字符串,分别代表字符串
和字符串
。
和
的长度不超过100。
输出描述:
对于每组询问,输出一行答案。若可以交换两个相邻字符使得
和
相等,则输出"Yes"。否则输出"No"。
示例1
输入例子:
3 acb cab abcxz cbaxz wa wa
输出例子:
Yes No Yes
例子说明:
第一组询问,交换前两个字符即可。
第二组询问,无法进行一次“交换相邻两个字符”使得两字符串相等。
第三组询问,字符串本身相等,不需要交换。
public class Program { public static void Main() { int q = int.Parse(System.Console.ReadLine()); string[][] patterns = new string[][] { new string[]{"r", "e", "d"}, new string[]{"r", "d", "e"}, new string[]{"e", "d", "r"}, new string[]{"e", "r", "d"}, new string[]{"d", "e", "r"}, new string[]{"d", "r", "e"}, }; for (int i = 0; i < q; i++) { string p = System.Console.ReadLine(); System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); bool fount = true; foreach (var pattern in patterns) { stringBuilder.Clear(); fount = true; for (int j = 0; j < p.Length; j++) { char c = p[j]; if (c != '?' && c.ToString() != pattern[j % 3]) { fount = false; break; } stringBuilder.Append(pattern[j % 3]); } if (fount) break; } if (fount) { System.Console.WriteLine(stringBuilder.ToString()); } else { System.Console.WriteLine("No"); } } } }

浙公网安备 33010602011771号