第四范式编程解析
//这次第四范式的编程题还真挺简单的,2道ac了百分百
//第一题,字符串相乘,不用说了,直接用BigInteger类的multiy方法,很简单,几行代码,或者可以转成数组,计算每一位。
//第二天求最长的回文子串,贴上代码 我的想法很简单,dfs回溯得到所有的回文字符串,加入List<List<String>>集合,然后遍历每一个字符串,得到长度最长的子字符串
import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class disifansi { public static void backtrack(List<List<String>> list, List<String> templist,String s, int start){ //回溯遍历
if(start == s.length()){
list.add(new ArrayList<String>(templist)); }else { for(int i = start;i<s.length();i++){ if(isDuiChen(s,start,i)){
templist.add(s.substring(start,i+1)); backtrack(list,templist,s,i+1); templist.remove(templist.size()-1); }
}
}
} public static boolean isDuiChen(String s, int low, int high){ //判断是不是回文串 while(low<high){ if(s.charAt(low++) != s.charAt(high--)){ return false; }
} return true; } public static void main(String[] args) {
Scanner sc = new Scanner(System.in); s = sc.nextLine(); List<List<String>> list = new ArrayList<>(); backtrack(list,new ArrayList<String>(),s,0); String[] aaa = new String[list.size()]; for(int i=0;i<list.size();i++){ //取每个List中最长的字符串
List<String> ll = list.get(i); int index=0; aaa[i] = ll.get(index); for(int j=0;j<ll.size();j++){ if(ll.get(j).length()>ll.get(index).length()){
index = j; aaa[i] = ll.get(index); }
}
} int index1=0; for(int i=0;i<aaa.length;i++){ //取最长的字符串 if(aaa[i].length()>aaa[index1].length()){
index1 = i; }
}
System.out.println(aaa[index1]); }
}
#第四范式##笔试题目#