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序列翻转,求出两者最长公共子串

  • 相关阅读:
    Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理
    mysql 索引
    C++ 后台进程 daemon
    Linux进程状态
    实现一个简单的shared_ptr
    [LeetCode] Factorial Trailing Zeroes
    完美转发
    排序
    每天五个java相关面试题(7)--线程篇
    程序员为什么会淡忘?
  • 原文地址:https://www.cnblogs.com/hgc-bky/p/9545355.html
Copyright © 2011-2022 走看看