题解 | 小红的回文串

小红的回文串

https://www.nowcoder.com/practice/b0c3a7aecb0a47ab865602585f4402a7



import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int t=scanner.nextInt();
		while(t-->0) {
			String string=scanner.next();
//			首先要明确,bdpq这四个字母是可以相互转换的,也就是同一等价类,那么我们就可以把这些字母统一一下
//			nu同理
//			然后就是m可以拆成nn,w可以拆成vv,我们索性全部都拆
			string=string.replace('d', 'b').replace('p', 'b').replace('q', 'b');
			string=string.replace("m", "nn").replace("w", "vv").replace('n', 'u');
			
			if(huiwen(string)) {
				System.out.println("YES");
			}else {
				System.out.println("NO");
			}
			
		}

	}
	public static boolean huiwen(String string) {
		StringBuilder sBuilder=new StringBuilder(string).reverse();
		
		if(string.equals(sBuilder.toString())) {
			return true;
		}
		return false;
	}
	

}

这题看起来很复杂,但是说白了,题目说了一堆,就是想告诉我们bdpq、nu是等价的,然后m和w可以拆分,既然要判断能不能变成回文,那么就干脆全部标准化,把同一类的统一为同一个字母,但是这里又有一个问题,就是如果我在拆分m前把n和u标准化,那么后面又会出现n,导致没有彻底标准化,所以n和u应该放在最后进行标准化

全部评论

相关推荐

点赞 评论 收藏
分享
03-04 07:14
门头沟学院 C++
何木健一:去啥?你能考虑去就是思想有问题,当然一周到岗一天可以考虑一下😨
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务