zoukankan      html  css  js  c++  java
  • 最长公共子串

    给定两个字符串str1和str2,输出两个字符串的最长公共子序列。如果最长公共子序列为空,则返回"-1"。目前给出的数据,仅仅会存在一个最长的公共子序列

    输入、

    "1A2C3D4B56","B1D23A456A

    输出

    “2345”

    状态转换方程:
    s1[i] == s2[j]    ---> dp[i][j] = dp[i-1][j--1] + 1

    s1[i] != s2[j]    ---> dp[i][j] = 0

    func LCS( str1 string ,  str2 string ) string{
    
    	row := len(str1)
    	col := len(str2)
    	if row==0 || col==0 {
    		return ""
    	}
    
    	dp := make([][]int, row+1)
    	for i:=0;i<row+1;i++{
    		dp[i] = make([]int, col+1)
    	}
    	for i:=0;i<row+1;i++ {
    		dp[i][0] = 0
    	}
    	for i:=0;i<col+1;i++ {
    		dp[0][i] = 0
    	}
    
    	max := 0
    	endIndex := 0
    	for i:=1;i<=row;i++{
    		for j:=1;j<=col;j++ {
    
    			if str1[i-1] == str2[j-1]{
    				dp[i][j] = dp[i-1][j-1]+1
    			}else{
    				dp[i][j] = 0
    			}
    
    			if dp[i][j] > max {
    				max = dp[i][j]
    				endIndex = i
    			}
    		}
    	}
    	return str1[endIndex-max:endIndex]
    }
    

      

  • 相关阅读:
    第一个C#程序
    定位网页元素
    盒子模型
    浮动
    css3美化网页元素
    html css3
    java表单基础
    表单
    html5基础
    java程序题目解析
  • 原文地址:https://www.cnblogs.com/jiguang321/p/14768630.html
Copyright © 2011-2022 走看看