Chinaunix首页 | 论坛 | 博客
  • 博客访问: 269864
  • 博文数量: 88
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 840
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-20 21:13
文章分类

全部博文(88)

文章存档

2022年(1)

2017年(1)

2016年(2)

2015年(1)

2014年(83)

分类: Java

2014-07-22 10:52:56

直接看代码:

点击(此处)折叠或打开

  1. package oj3;

  2. import java.util.Arrays;
  3. import java.util.Scanner;

  4. //最长公共子串
  5. public class Main21 {

  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.         String str = scanner.nextLine();
  9.         String[] strArray = str.split("\\s+");
  10.         String str1 = strArray[0].toLowerCase();
  11.         String str2 = strArray[1].toLowerCase();
  12.         String commonStr = getCommonLongestStr(str1, str2);
  13.         System.out.print(commonStr.length());
  14.         scanner.close();
  15.     }

  16.     private static String getCommonLongestStr(String str1, String str2) {
  17.         int xlen = str1.length(); // 横向长度
  18.         int[] tmp = new int[xlen]; // 保存矩阵的上一行
  19.         int[] arr = new int[xlen]; // 当前行
  20.         int ylen = str2.length(); // 纵向长度
  21.         int maxelement = 0; // 矩阵元素中的最大值
  22.         int pos = 0; // 矩阵元素最大值出现在第几列
  23.         for (int i = 0; i < ylen; i++) {// i为列数
  24.             String s1 = str2.substring(i, i + 1);
  25.             Arrays.fill(arr, 0);
  26.             for (int j = 0; j < xlen; j++) {// j为行数
  27.                 String s2 = str1.substring(j, j + 1);
  28.                 if (s1.equals(s2)) {
  29.                     if (j == 0)
  30.                         arr[j] = 1;
  31.                     else
  32.                         arr[j] = tmp[j - 1] + 1;
  33.                     if (arr[j] > maxelement) {
  34.                         maxelement = arr[j];
  35.                         pos = j;
  36.                     }
  37.                 }
  38.             }
  39.             System.arraycopy(arr, 0, tmp, 0, arr.length);
  40.         }
  41.         return str1.substring(pos - maxelement + 1, pos + 1);
  42.     }
  43. }


阅读(498) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~