zoukankan      html  css  js  c++  java
  • leetcode 1071 Greatest Common Divisor of Strings

    lc1071 Greatest Common Divisor of Strings

    找两个字符串的最长公共子串

    假设:str1.length > str2.length

    因为是公共子串,所以str2一定可以和str1前面一部分匹配上,否则不存在公共子串。

    所以我们比较str2和str1的0~str2.length()-1部分,

    若不同,则直接返回””,不存在公共子串。

    若相同,继续比较str2和str1的剩下部分,这里就是递归了,调用原函数gcd(str2, str1.substring(str2.length))

    还有一些细节:

    比如保证str1永远>str2,可以用一个if(str1 < str2){swap(str1, str2)}

    str1 == str2 直接检查 str1.equals(str2)

     1 class Solution {
     2     public String gcdOfStrings(String str1, String str2) {
     3         return GCD(str1, str2);        
     4     }
     5     public String GCD(String a, String b) {
     6         if(a.length() > b.length()) {
     7             for(int i = 0; i < b.length(); i++){
     8                 if(b.charAt(i) != a.charAt(i)){
     9                     return "";
    10                 }
    11             }
    12             String temp = a.substring(b.length());
    13             return GCD(temp,b);
    14         }
    15         else if(b.length() > a.length())
    16             return GCD(b, a);
    17         else
    18             return a.equals(b) ? a : "";
    19     }
    20 }
  • 相关阅读:
    机器学习之逻辑回归
    机器学习之线性回归与模型保存
    机器学习之决策树
    机器学习之贝叶斯算法
    机器学习之KNN算法
    算法基础与开发流程
    特征选择与特征降维
    特征预处理
    RSA加密算法和签名算法
    Java中使用OpenSSL生成的RSA公私钥
  • 原文地址:https://www.cnblogs.com/hwd9654/p/10971812.html
Copyright © 2011-2022 走看看