楼下大佬@Anguei 讲了python
的正则表达式
,这里怎么能没有java
的啦!
本题实质上可以转化为正则表达式匹配!
正则表达式
其中()?
表示括号里的字符可以匹配也可以不匹配,若没有括号则匹配括号前的一个字符,其中$
相当于匹配结束。
如KIHABAR
这个字符串匹配正则表达式A?KIHA?BA?RA?
,因为其中的字符A
可选匹配(匹配了2个),而其他字符都匹配成功了,所以可以匹配成功。
其他详情可以自己网上阅读资料了解。
代码:
import java.util.Scanner; //java输入库
import java.util.regex.*; //java正则表达式库
public class Main //洛谷里默认类名(文件名)为Main
{
public static void main(String args[])
{
Scanner input=new Scanner(System.in); //相当于输入流
String str=input.nextLine(); //输入字符串(其实是读取一行)
String pattern="A?KIHA?BA?RA?$"; //要被匹配的正则表达式
if(Pattern.matches(pattern,str)) System.out.println("YES"); //如果匹配成功就输出"YES",函数参数顺序千万不能反了!
else System.out.println("NO"); //反之则输出"NO"
}
}