统计
  • 建站日期:2019-12-01
  • 文章总数:2425 篇
  • 评论总数:2167 条
  • 分类总数:22 个
  • 最后更新:5月20日
文章 未分类

JAVA 蓝桥杯 第八届 C组 第六题 最大公字符串

程序员阿鑫
首页 未分类 正文


JAVA蓝桥杯第八届C组第六题最大公字符串
-程序员阿鑫-带你一起秃头
-第1
张图片

题目描述

最大公共子串就是求两个串的所有子串中能够匹配上的最大长度是多少。

比如:"abcdkkk" 和 "baabcdadabc",
可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4。

下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。

请分析该解法的思路,并补全划线部分缺失的代码。

  1. public class A
  2. {
  3. static int f(String s1, String s2)
  4. {
  5. char[] c1 = s1.toCharArray();
  6. char[] c2 = s2.toCharArray();
  7. int[][] a = new int[c1.length+1][c2.length+1];
  8. int max = 0;
  9. for(int i=1; i<a.length; i++){
  10. for(int j=1; j<a[i].length; j++){
  11. if(c1[i-1]==c2[j-1]) {
  12. a[i][j] = _______________________ ; //填空
  13. if(a[i][j] > max) max = a[i][j];
  14. }
  15. }
  16. }
  17. return max;
  18. }
  19. public static void main(String[] args){
  20. int n = f("abcdkkk", "baabcdadabc");
  21. System.out.println(n);
  22. }
  23. }

注意:只提交缺少的代码,不要提交已有的代码和符号。也不要提交说明性文字。

答案:

1+a[i-1][j-1]

整体代码:

  1. package com.cxyax.moni;
  2. public class Main6 {
  3. public static int f(String s1, String s2)
  4. {
  5. char[] c1 = s1.toCharArray();
  6. char[] c2 = s2.toCharArray();
  7. int[][] a = new int[c1.length+1][c2.length+1];
  8. int max = 0;
  9. for(int i=1; i<a.length; i++){
  10. for(int j=1; j<a[i].length; j++){
  11. if(c1[i-1]==c2[j-1]) {
  12. a[i][j] = 1+a[i-1][j-1]; //填空
  13. if(a[i][j] > max) {
  14. max = a[i][j];
  15. }
  16. }
  17. }
  18. }
  19. return max;
  20. }
  21. public static void main(String[] args){
  22. int n = f("abcdkkk", "baabcdadabc");
  23. System.out.println(n);
  24. }
  25. }

以上是《JAVA 蓝桥杯 第八届 C组 第六题 最大公字符串》的全部内容,

感谢您对程序员阿鑫博客的支持!

 

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
这篇文章最后更新于2020-10-19,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
JAVA 蓝桥杯 算法训练 不同字符串
« 上一篇
JAVA 蓝桥杯 第十届C组 第2019位素数
下一篇 »

发表评论

  • 泡泡
  • 阿呆
  • 阿鲁


扫一扫,支付10
支付完成后,请等待5秒左右。手机请点此支付!