Java 实现两个字符串中相同的词

在当今的软件开发中,解决字符串处理的问题是很常见的。而找到两个字符串中相同的词则是一个非常实用的需求。这篇文章将指导你实现这个功能,具体步骤如下:

流程概述

步骤 描述
1 将输入的字符串分割为单词
2 通过集合存储第一个字符串的单词
3 检查第二个字符串的每个单词是否在集合中
4 收集所有相同的单词并输出

状态图

stateDiagram
    [*] --> 输入字符串
    输入字符串 --> 分割单词
    分割单词 --> 存储第一个字符串的单词
    存储第一个字符串的单词 --> 检查第二个字符串的单词
    检查第二个字符串的单词 --> 收集相同的单词
    收集相同的单词 --> 输出结果

代码实现

1. 分割字符串

首先,我们需要将输入的字符串分割成单个的单词。可以使用 Java 的 split() 方法。

String str1 = "apple orange banana grape";
String str2 = "banana kiwi apple mango";

// 分割字符串
String[] words1 = str1.split(" ");
String[] words2 = str2.split(" ");

解释:上述代码将字符串 str1str2 分割成若干个单词,并将结果存储在 words1words2 数组中。

2. 将第一个字符串的单词存储到集合中

使用 HashSet 来存储第一个字符串的单词,这样可以提高查找的效率。

import java.util.HashSet;
import java.util.Set;

Set<String> wordSet = new HashSet<>(); // 创建一个 HashSet 用于存储单词

// 将第一个字符串的单词添加到集合中
for (String word : words1) {
    wordSet.add(word); // 将每个单词添加到集合中
}

解释:我们创建了一个 HashSet,并通过循环将第一个字符串中的所有单词添加到这个集合中。

3. 检查第二个字符串的单词

接下来,我们将检查第二个字符串的单词是否在我们之前创建的集合中。

Set<String> commonWords = new HashSet<>(); // 用于存储相同的单词

// 检查第二个字符串的每个单词是否在第一个字符串的集合中
for (String word : words2) {
    if (wordSet.contains(word)) { // 如果集合中包含这个单词
        commonWords.add(word); // 将相同的单词添加到结果集中
    }
}

解释:通过使用 contains() 方法,我们可以判断第二个字符串的单词是否在集合中,并将相同的单词存储到 commonWords 集合中。

4. 输出结果

最后,我们需要将找到的所有相同单词打印出来。

// 输出相同的单词
if (commonWords.isEmpty()) {
    System.out.println("没有相同的单词");
} else {
    System.out.println("相同的单词有: " + commonWords);
}

解释:首先检查 commonWords 是否为空,如果不为空则打印出相同的单词。

完整代码示例

将所有步骤整合起来,我们可以得到完整的代码如下:

import java.util.HashSet;
import java.util.Set;

public class CommonWordsFinder {
    public static void main(String[] args) {
        String str1 = "apple orange banana grape";
        String str2 = "banana kiwi apple mango";

        // 分割字符串
        String[] words1 = str1.split(" ");
        String[] words2 = str2.split(" ");

        // 存储第一个字符串的单词
        Set<String> wordSet = new HashSet<>();
        for (String word : words1) {
            wordSet.add(word);
        }

        // 检查第二个字符串的单词
        Set<String> commonWords = new HashSet<>();
        for (String word : words2) {
            if (wordSet.contains(word)) {
                commonWords.add(word);
            }
        }

        // 输出结果
        if (commonWords.isEmpty()) {
            System.out.println("没有相同的单词");
        } else {
            System.out.println("相同的单词有: " + commonWords);
        }
    }
}

结论

通过以上步骤,我们实现了一个简单的 Java 程序来查找两个字符串中相同的单词。理解了每一步后,你应该能够灵活运用这段代码在不同场景下解决类似问题。希望这篇文章能够帮助到你,祝你在编程的道路上越走越远!