java - 查找两个字符串中的共同字母(Java)

标签 java string algorithm

目标是找到两个给定字符串中的共同字母 s1s2 .

常用符号字符串的长度必须至少为两个字母。

输入示例

String s1 = "BAABBBAABBA";
String s2 = "BBBABBBAA";

缩小解决方案范围的步骤

  1. 步骤:
s1 = BAA**BBBA**ABBA
s2 = **BBBA**BBBABA

len = 4
  • 步骤:
  • s1 = BAA____A**BBA**
    s2 = ____B**BBA**BA
    
    len = 3
    

    我是一个初学者,在这个案例上挣扎了 4 个小时。 有人可以帮我解决这个问题吗? 很高兴收到 Java 解决方案。

    提前致谢。

    最佳答案

    也许下面的代码可以帮助你。这个想法是从一个字符串创建所有可能的子字符串,以检查该子字符串是否包含在另一个字符串中。

    import java.util.HashSet;
    import java.util.Set;
    
    public class Test {
    
        public static void main(String[] args) {
    
            String s1 = "BAABBBAABBA";
            String s2 = "BBBABBBAA";
    
            Set<String> foundSet = new HashSet<>();
    
            for (int start = 0; start < s1.length() - 1; ++start) {
    
                for (int end = start + 2; end <= s1.length(); ++end) {
                    String subString = s1.substring(start, end);
                    if (s2.contains(subString)) {
                        foundSet.add(subString);
                    }
                }
            }
    
            foundSet.forEach(System.out::println);
        }
    }
    

    关于java - 查找两个字符串中的共同字母(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59543967/

    相关文章:

    java - 抛出异常后调用 main 进行另一次尝试

    java - 向父级添加两次子级对象,导致NonUniqueObjectException

    python - 从 pandas 数据框中的字符串中提取信息非常困难

    java - 在 Java 中将节点添加到列表的开头?

    模式化(地铁) map 的算法

    algorithm - 范围内的 squarefree 数字计数

    java - findviewbyid 错误无法解决

    java - 注册日期需要以特定格式在请求正文中传递

    Python - 在嵌套循环中删除一行中的第一个单词

    javascript - typescript:从条件类型派生类型