美团今天笔试第一题回文串求教
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s=sc.next();
int n=s.length();
long res=0;
boolean[][] f=new boolean[n][n];
for(int i=0;i<n;i++) Arrays.fill(f[i],true);
for(int i=n-1;i>=0;i--){
for(int j=i+1;j<n;j++){
f[i][j]=(s.charAt(i)==s.charAt(j)&&f[i+1][j-1]);
if(f[i][j]) res++;
}
}
System.out.print(res);
}
}
这样写为啥只能过25%呢,我以为要去个重结果去重完只能过15%了
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s=sc.next();
int n=s.length();
long res=0;
boolean[][] f=new boolean[n][n];
for(int i=0;i<n;i++) Arrays.fill(f[i],true);
for(int i=n-1;i>=0;i--){
for(int j=i+1;j<n;j++){
f[i][j]=(s.charAt(i)==s.charAt(j)&&f[i+1][j-1]);
if(f[i][j]) res++;
}
}
System.out.print(res);
}
}
这样写为啥只能过25%呢,我以为要去个重结果去重完只能过15%了
全部评论
用中心拓展就行了,分别一个字母为中心和两个字母为中心,两种情况求和
字母必须也是对称的哦
题目要求子串由A,M...等对称的字符组成
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享