查找两个字符串的相同代码块--Java

2023-11-03

//前提:两个字符串中只有一个最大相同子串
    public String getMaxSameString(String str1,String str2){
        if(str1 != null && str2 != null){
            String maxStr = (str1.length() >= str2.length())? str1 : str2;
            String minStr = (str1.length() < str2.length())? str1 : str2;
            int length = minStr.length();

            for(int i = 0;i < length;i++){
                for(int x = 0,y = length - i;y <= length;x++,y++){
                    String subStr = minStr.substring(x,y);
                    if(maxStr.contains(subStr)){
                        return subStr;
                    }

                }
            }

        }
        return null;
    }

    // 如果存在多个长度相同的最大相同子串
    // 此时先返回String[],后面可以用集合中的ArrayList替换,较方便
    public String[] getMaxSameString1(String str1, String str2) {
        if (str1 != null && str2 != null) {
            StringBuffer sBuffer = new StringBuffer();
            String maxString = (str1.length() > str2.length()) ? str1 : str2;
            String minString = (str1.length() > str2.length()) ? str2 : str1;

            int len = minString.length();
            for (int i = 0; i < len; i++) {
                for (int x = 0, y = len - i; y <= len; x++, y++) {
                    String subString = minString.substring(x, y);
                    if (maxString.contains(subString)) {
                        sBuffer.append(subString + ",");
                    }
                }
//                System.out.println(sBuffer);
                if (sBuffer.length() != 0) {
                    break;
                }
            }
            String[] split = sBuffer.toString().replaceAll(",$", "").split("\\,");
            return split;
        }

        return null;
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找两个字符串的相同代码块--Java 的相关文章

随机推荐

  • JdbcTemplate防注入的几种方式

    使用数组 public void deleteItemByName String name Object obj new Object name String sql DELETE FROM t item WHERE name jdbcTe
  • php开启opcache

    1 简介 OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销 注意 如果需要将 Xdebug 扩展和 OPcache 一起使用 必须
  • C++ 11学习

    原始字符串字面量 就不需要转义引脚 原始字符串字面量以R 开头 以 结尾 string str R Hello World c 中 nullptr无法意识转换为整形 但是可以隐式匹配指针类型 在C 11校准下 相比NULL和0 使用null
  • Nginx 状态页详解

    Nginx 状态页详解 基于nginx 模块 ngx http stub status module 实现 在编译安装nginx的时候需要添加编译参数 with http stub status module 否则配置完成之后监测会是提示语
  • Linux命令大全,唯一以案例详解文,持续更新中

    系列文章目录 软件测试功能到自动化学习路线图 2022年最新版技术栈 软件测试01 从了解测试岗位职能和测试流程开始 附作业 软件测试02 6大实际案例手把手教你设计测试点 软件测试03 用例执行以及缺陷管理的学习 附禅道下载使用流程 软件
  • 信贷风险指标你都懂吗?

    转自 简书 信贷指标 风控基本概念 贷款不良率 不良贷款率 逾期率Vintage统计法 Now和Ever DPD1 DPD30 DPD60 DPD90 引言 17年3月份的时候 有一篇文章曾经引爆金融界 称某国内知名互联网金融逾期率高达30
  • linux下解压zip文件命令

    Linux下的压缩解压缩命令详解及实例 实例 压缩服务器上当前目录的内容为xxx zip文件 zip r xxx zip 解压zip文件到当前目录 unzip filename zip 另 有些服务器没有安装zip包执行不了zip命令 但基
  • Apache Tomcat AJP 文件包含漏洞复现(CVE-2020-10487)

    影响范围 tomcat 7 lt 7 0 100 tomcat 8 lt 7 5 51 tomcat 9 lt 9 0 31 利用条件 1 漏洞版本范围内 2 默认开启ajp服务 漏洞复现 nmap扫描 默认端口8009 经测试存在更改默认
  • AI绘画调用OpenAI-api接口【人工智能里的未来之城】:4 座未来派塔楼,天桥上覆盖着茂密的树叶,数字艺术

    OpenAI绘画数字艺术是一种利用人工智能算法生成数字艺术的技术 该技术使用了一种称为GAN Generative Adversarial Networks 生成对抗网络 的深度学习模型 这种模型由两个神经网络组成 生成器和判别器 生成器的
  • 07-2_Qt 5.9 C++开发指南_二进制文件读写(stm和dat格式)

    文章目录 1 实例功能概述 2 Qt预定义编码文件的读写 2 1 保存为stm文件 2 2 stm文件格式 2 3 读取stm文件 3 标准编码文件的读写 3 1 保存为dat文件 3 2 dat文件格式 3 3 读取dat文件 4 框架及
  • 【Maven】Maven下载,配置以及基本概念

    文章目录 1 Maven简介 2 Maven下载 3 Maven环境配置 4 Maven的基本概念 4 1 仓库 4 2 坐标 4 3 仓库配置 修改IDEA默认Maven库 1 Maven简介 Maven是一个Java项目管理工具和构建工
  • 本博客全文目录索引

    本专栏博文索引 目录 涵盖 C C STL Data Structure Algorithm TCP IP Linux Interface Driver Kernel Netfilter 和 Projects C C 详解C指针 C 对象模
  • Java BufferedInputStream原理及设计模式分析

    文章目录 背景 源码分析 FileInputStream BufferedInputStream 装饰器模式 总结 背景 BufferedInputStream和其他InputStream常常放在一起使用 BufferedInputStre
  • 梯度有关问题

    1 偏导数 方向导数 导数是函数随自变量的变化率 对于 一元函数 只有一个自变量x 那么函数y f x 的导数是 在某一点处沿x轴正方向的变化率 多元函数 多个自变量 是多维向量 那么函数随自变量的变化怎么刻画呢 一个方法 就是衡量函数在给
  • 【终极区分】iterable和iterator

    1 凡是可作用于for循环的对象都是Iterable类型 2 凡是可作用于next 函数的对象都是Iterator类型 它们表示一个惰性计算的序列 3 集合数据类型如list dict str等是Iterable但不是Iterator 不过
  • C#中的拆箱与装箱

    1 什么是拆箱和装箱 在C 中 值类型是直接将数据存储在栈空间中 而引用类型是将数据存储在堆空间中 同时在栈空间中存储一个对该数据的引用 那么如果将一个值类型转换为一个它实现的某个接口或object会发生什么 结果必然是对一个存储位置的引用
  • Nodejs源码解析之module

    http blog csdn net leoleocs article details 50245677 module管理是Nodejs中比较有特色的部分 官方有详细的文档https nodejs org api modules html
  • el-tabs通过动态组件来更新单个tab页

    使用element ui的el tabs时 加载页面时会将所有单个tab页渲染出来 如果两个有联系的单个tab页 其中一个添加了数据 另一个tab页只有刷新才会显示出新的数据 使用动态组件来更新单个tab页 在data中定义tab列表 da
  • UnboundLocalError: cannot access local variable XXX where it is not associated with a value解决办法

    代码如图 a 1 def test a 1 test 此时运行代码会产生以下报错 UnboundLocalError cannot access local variable a where it is not associated wit
  • 查找两个字符串的相同代码块--Java

    前提 两个字符串中只有一个最大相同子串 public String getMaxSameString String str1 String str2 if str1 null str2 null String maxStr str1 len