第四范式编程解析

//这次第四范式的编程题还真挺简单的,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]);   }
}

#第四范式##笔试题目#
全部评论
我的题和你的一样,我第二题是把字符串翻转,然后两个字符串找公共子串
点赞 回复 分享
发布于 2018-09-09 16:49

相关推荐

03-25 19:00
东北大学 Java
程序员牛肉:太好了,是聊天记录。不得不信了。 当个乐子看就好,不要散播焦虑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务