大概题意是:比如输入三行字符串:
aaaacaaa
aca
aa
1)如果顺序看第一行,可以一次找到aca、aa的字串,
2)倒序看时,也依次找到aa、aca
如果1)和2)的条件都成立,输出both;如果1)成立,2)不成立,输出forward;如果1)不成立,2)成立,输出backward;如果1) 和2)都不成立,输出invalid
import java.util.Scanner; /** * Created by chenliqing on 16/9/5. */ public class Main { static int pos1,pos2; public static void main(String[] args) { Scanner in=new Scanner(System.in); while(in.hasNext()) { String str1=in.nextLine();//输入 String str2=in.nextLine(); String str3=in.nextLine(); Boolean bl1=strExit(str1,str2,0); Boolean bl2=strExit(str1,str3,pos1); Boolean bl3=strExit1(str1,str2,str1.length()-1); Boolean bl4=strExit1(str1,str3,pos2); if(bl1==true&&bl2==true&&bl3==false||bl4==false) System.out.println("forward"); else if(bl1==true&&bl2==true&&bl3==true&&bl4==true) System.out.println("both"); else if(bl3==true&&bl4==true&&bl1==false||bl2==false) System.out.println("backward"); else System.out.println("invalid"); } } private static boolean strExit(String str1,String str2,int start) { while(start<str1.length()){ int j=0; int i=start; while(j<str2.length()&&str1.charAt(i)==str2.charAt(j)) { j++; i++; } if(j==str2.length()) { pos1=i; return true; } start++; } return false; } private static boolean strExit1(String str1,String str2,int start) { for(;start>=0;start--) { int i=start; int j=0; while(j>=0&&str1.charAt(i)==str2.charAt(j)) { j--; i--; } if(j<0) { pos2=i; return true; } } return false; } }