package huawei;
public final class Demo {
/*
功能: 根据一组规则识别一个特定的字符串是常见的计算机问题,
定义了如下三种字符串类型:
Slump是一串字符,具有如下性质:
1.以'D'或'E'开始
2.第一个字符后由1个或多个'F'
3.之后跟着一个Slump或'G',至此一个Slump结束。
4.其他的都不是Slump
例如,DFFEFFFG是Slump
Slimp是一串字符,具有如下性质:
1.第一个字符是'A'
2.如果Slimp只有2个字符,则第二个字符是'H'
3.如果大于2个字符,则可能有2种形式
a) 'A'后接一个'B'再接一个Slimp再接一个'C'
b) 'A'后接一个Slump再接一个'C'
4.其他的都不是Slimp
Slurpy是一个Slimp后接一个Slump组成
请编写程序判断一个字符串是否为Slurpy
输入: 一个字符串
输出: 无
返回: 1,是Slurpy
0,不是
*/
public static boolean isSlump(String str)
{
if(str.equals("")||str.length()<3) return false;
int startPos;
if(str.charAt(0)!='E'&&str.charAt(0)!='D')
{
return false;
}
else
{
for(startPos=1;startPos<str.length();startPos++)
if(str.charAt(startPos)!='F')
break;
if(startPos==1)
return false;
}
if(startPos+1==str.length()&&str.charAt(startPos)=='G')
{
return true;
}
else
{
String subStr=str.substring(startPos);
return isSlump(subStr);
}
}
public static boolean isSlimp(String str)
{
if(str.equals("")||str.length()<2||str.charAt(0)!='A')
return false;
else if(str.length()==2)
{
if(str.charAt(1)=='H')
return true;
else
return false;
}
else
{
if(str.charAt(1)=='B')
{
if(str.length()>3)
{
String subStr=str.substring(2, str.length()-1);
if(isSlimp(subStr)&&str.charAt(str.length()-1)=='C')
return true;
else {
return false;
}
}
else {
return false;
}
}
else {
if(str.length()>2)
{
String subStr=str.substring(1,str.length()-1);
if(isSlump(subStr)&&str.charAt(str.length()-1)=='C')
return true;
else {
return false;
}
}
else {
return false;
}
}
}
}
public static int isSlurpy(String str)
{
/*在这里实现功能*/
int len=str.length();
for(int i=2;i<len;i++)
{
String slimpStr=str.substring(0,i);
String slumpStr=str.substring(i);
if(isSlimp(slimpStr)&&isSlump(slumpStr))
return 1;
}
return 0;
}
}