java - 使用基本 Java 方法查找字符串中的模式

标签 java string character

假设我们有一个包含这些字符的字符串 “ABGCCFFGTBG”

然后我们有另一个包含字符“GECCCDOABG”的字符串

所以模式是前缀和后缀,但如果你给定的字符串比这个大,但有共同的前缀和后缀模式,如何将它们拉出到java中的子字符串中。请记住,我们并不总是知道字符串中的字符正在获取,我们只是知道其中存在某种模式。

我的开始是这样的

for(int i = 0. i < strA.length(); i++)
{
    for(int j = 0; j < strB.length(); j++)
    {
       if(strA.charAt(i) == strB.charAt(j))
       {
          String subPattern = strA.substring(0,i);
          String subPattern2 = strB.substring(0,j);
       }
    }
}  

但这不起作用。有什么想法吗?

最佳答案

首先尝试选择最匹配的模式:

public static void main(String[] args) {
    String strA = "ABGCCFFGTBG";
    String strB = "GECCCDOABG";
    System.out.println("Pattern: " + findPattern(strA, strB));
}

public static String findPattern(String strA, String strB) {
    for (int length = Math.min(strA.length(), strB.length()); length > 0; length--) {
        for (int i = 0; i <= strA.length() - length; i++) {
            String pattern = strA.substring(i, i + length);
            if (strB.contains(pattern)) {
                return pattern;
            }
        }
    }
    throw new NoSuchElementException("No common pattern between " + strA + " and " + strB);
}

输出:

Pattern: ABG

关于java - 使用基本 Java 方法查找字符串中的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26959566/

相关文章:

java - 从扩展 swing 组件的类中删除方法或字段

java - 如何将一些值从一个类转移到另一个类?

java - 如何在 Struts 2 jQuery 中访问嵌套的 JSON 响应 <sj :select> tag

c++ - 连接时字符串 '\0' null 出错

r - 如何将 dplyr 操作与列名的字符串列表一起使用

ios - 扩展 UnicodeScalar : Creating an init method from a Character

java - 如何用字符更改按钮文本?

unicode - UTF-8 是编码还是字符集?

java - Spring Cloud Config Server - 连接 github 的用户名和密码

Java - For循环显示所有唯一子字符串