腾讯笔试题

来源:互联网 发布:insomnia mac 编辑:程序博客网 时间:2024/06/15 22:54
题目要求:
最长回文子序列
题目思想大概是这样:cabbeaf:回文子序列有:c,a,aa,bb,,aba,abba,e,f,最长的就是abba,所以输出长度为4
来源:http://www.nowcoder.com/discuss/4420?type=0&order=0&pos=4&page=1
import java.util.*;public class Main{  public static void main(String[] args){    Scanner s=new Scanner(System.in);    while(s.hasNext()){      System.out.println(getMaxLength(s.next()));    }  }  public static int getMaxLength(String s){    if(s==null)return 0;    if(s.length()<2) return s.length();    int n=s.length();    int[][] matrix=new int[n][n];    for(int i=0;i<n;i++){      matrix[i][i]=1;    }    int max=1;    for(int i=n-1;i>=0;i--){      for(int j=i+1;j<n;j++){        if(s.charAt(i)==s.charAt(j)){          if(j==i+1){            matrix[i][j]=2;          }else{            matrix[i][j]=matrix[i+1][j-1]+2;          }          if(matrix[i][j]>max){            max=matrix[i][j];          }        }else{          matrix[i][j]=Math.max(matrix[i][j-1],matrix[i+1][j]);        }      }    }    return max;  }}


0 0
原创粉丝点击