关注
这个问题,我一开始用KMP算法正一遍,反一遍找匹配字符串后对应输出的啊
,而且第二次看到的旗帜一定要在第一次看到的旗帜后面这点也考虑到了,数组越界也考虑了,但是提示Wrong
Answer,好像是说全部未通过,示例都能通过至少也不该是0%吧,这里的KMP算法通过了牛客网的测试用例的函数
import java.util.Scanner;
public class Main {
public static int[] getPMT(char[] b,int lenb){
int[] arr=new int[lenb];
arr[0]=0;
int i=0,j=-1;
while(i<lenb-1){
if(j==-1 || b[i]!=b[j]){
i++;
j++;
if(b[i]==b[j]){
arr[i]=j+1;
}
else{
arr[i]=0;
j=-1;
}
}
else{
i++;
j++;
if(b[i]!=b[j]){
i--;
j=-1;
}
else{
arr[i]=j+1;
}
}
}
return arr;
}
public static int findAppearance(String A, int lena, String
B, int lenb,int mark) {
// write code here
if(lena<lenb)return -1;
char[] a=A.toCharArray();
char[] b=B.toCharArray();
int[] pmt=getPMT(b,lenb); //new int[lenb]; //部分匹配表
int i=mark; //左对齐下标
int j=0; //内标
while(i<=lena-lenb){
while(j<lenb){
if(a[i]!=b[j]){
if(j==0)i++;
else{
i-=pmt[j-1];
}
j=0;
break;
}
else{
i++;
j++;
if(j==lenb)return i-lenb; //返回对齐的字符串头位置
}
}
}
return -1; //无匹配则返回-1
}
public static int check(int nA,int nB,int nA2,int nB2,int
lA){
if((nB-nA)>=lA && nA!=-1 &&
nB!=-1){
if((nB2-nA2)>=lA && nA2!=-1 &&
nB2!=-1){
return 3; //表示both
}
else{
return 1; //表示forward
}
}
else if((nB2-nA2)>=lA && nA2!=-1
&& nB2!=-1){
return 2; //表示backward
}
return 4; //表示invalid
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String C=sc.nextLine(); //正序路径
int lC=C.length();
char[] c=C.toCharArray();
String C2="";
for(int i=0;i<lC;i++){
C2+=c[lC-1-i];
}
String A=sc.nextLine();
String B=sc.nextLine();
int nA,nB;
int nA2,nB2;
nA=findAppearance(C,lC,A,A.length(),0);
nB=findAppearance(C,lC,B,B.length(),nA+A.length());
nA2=findAppearance(C2,lC,A,A.length(),0);
nB2=findAppearance(C2,lC,B,B.length(),nA2+A.length());
int re=check(nA,nB,nA2,nB2,A.length());
if(re==1)System.out.println("forward");
else if(re==2)System.out.println("backward");
else if(re==3)System.out.println("both");
else if(re==4)System.out.println("invalid");
}
}
查看原帖
点赞 1
牛客热帖
更多
- 1... 你会和mentor进行deeptalk吗?2375
- 2... 双非本2025秋招总结:65w+SSP三选一,最终还是“有鹅选鹅”|附面试心路历程1900
- 3... 金丹后期牛友!我们新年再见1847
- 4... 希望新的一年,我依然是走向幸福的那个人1330
- 5... 牛客运营们,我保证这是我最后一次消费烤肠了!1231
- 6... 学院本 末 211 硕勇闯 java 后端实习美团 oc 逆袭指南1164
- 7... 27届学院本一段中厂一段中大厂实习,简历求锐评812
- 8... 元旦前被裁员了697
- 9... 27前端已没招640
- 10... 脑抽给面试官唱了一首英文歌623
正在热议
更多
# 对2025年忏悔 #
6447次浏览 118人参与
# 互联网行业现在还值得去吗 #
48078次浏览 356人参与
# 实习没人带,苟住还是跑路? #
14895次浏览 290人参与
# 春招前还要继续实习吗? #
7486次浏览 89人参与
# 一人说一家双休的公司 #
9305次浏览 111人参与
# 移动求职进展汇总 #
18850次浏览 149人参与
# 你找工作的时候用AI吗? #
166148次浏览 865人参与
# 国企秋招,你投了吗? #
55393次浏览 364人参与
# 元旦假期你打算怎么过 #
9735次浏览 187人参与
# 工作前VS工作后,你的心态变化 #
31709次浏览 249人参与
# 面试官问过你最刁钻的问题是什么? #
11976次浏览 112人参与
# 职场新人生存指南 #
491853次浏览 9518人参与
# 大家实习都在做什么? #
9600次浏览 102人参与
# 我的AI电子员工 #
24496次浏览 155人参与
# 我们是不是被“优绩主义”绑架了? #
10185次浏览 308人参与
# OPPO求职进展汇总 #
758859次浏览 5392人参与
# 你觉得专业和学校哪个对薪资影响最大 #
87876次浏览 587人参与
# 华为工作体验 #
279148次浏览 1360人参与
# 通信/硬件公司求职体验 #
184486次浏览 1032人参与
# 通信硬件薪资爆料 #
1188970次浏览 7185人参与

