zoukankan      html  css  js  c++  java
  • 求两个字符串的最长公共子串——Java实现

    要求:求两个字符串的最长公共子串,如“abcdefg”和“adefgwgeweg”的最长公共子串为“defg”(子串必须是连续的)

    public class Main03{
    	// 求解两个字符号的最长公共子串
    	public static String maxSubstring(String strOne, String strTwo){
    		// 参数检查
    		if(strOne==null || strTwo == null){
    			return null;
    		}
    		if(strOne.equals("") || strTwo.equals("")){
    			return null;
    		}
    		// 二者中较长的字符串
    		String max = "";
    		// 二者中较短的字符串
    		String min = "";
    		if(strOne.length() < strTwo.length()){
    			max = strTwo;
    			min = strOne;
    		} else{
    			max = strTwo;
    			min = strOne;
    		}
    		String current = "";
    		// 遍历较短的字符串,并依次减少短字符串的字符数量,判断长字符是否包含该子串
    		for(int i=0; i<min.length(); i++){
    			for(int begin=0, end=min.length()-i; end<=min.length(); begin++, end++){
    				current = min.substring(begin, end);
    				if(max.contains(current)){
    					return current;
    				}
    			}
    		}
    		return null;
    	}
    	
    	public static void main(String[] args) {
    		String strOne = "abcdefg";
    		String strTwo = "adefgwgeweg";
    		String result = Main03.maxSubstring(strOne, strTwo);
    		System.out.println(result);
    	}
    }
    

      

    总觉得这题,输出结果和题意不相符合,结果2,是不是把B序列翻转,求出两者最长公共子串

  • 相关阅读:
    python数据库小脚本
    替换debug
    监听属性变化
    ast binding
    还原未修改的常量
    数据库中常用查询
    职业生涯四个阶段
    如何控制需求
    如何将VS Code 切换成中文
    当同时使用bootstrapdatepicker.js和jquery.validate.js这两款插件,至少要选择两次时间,才能验证成功的问题
  • 原文地址:https://www.cnblogs.com/hgc-bky/p/9545355.html
Copyright © 2011-2022 走看看