`
palwang
  • 浏览: 50490 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

字符串数组的交集,并集和差集的程序代码

阅读更多
package string;

import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class StringArray {
    public static void main(String[] args) {
        //测试union
        String[] arr1 = {"abc", "df", "abc"};
        String[] arr2 = {"abc", "cc", "df", "d", "abc"};
        String[] result_union = union(arr1, arr2);
        System.out.println("求并集的结果如下:");
        for (String str : result_union) {
            System.out.println(str);
        }
        System.out.println("---------------------可爱的分割线------------------------");

        //测试insect
        String[] result_insect = intersect(arr1, arr2);
        System.out.println("求交集的结果如下:");
        for (String str : result_insect) {
            System.out.println(str);
        }

         System.out.println("---------------------疯狂的分割线------------------------");
          //测试minus
        String[] result_minus = minus(arr1, arr2);
        System.out.println("求差集的结果如下:");
        for (String str : result_minus) {
            System.out.println(str);
        }
    }

    //求两个字符串数组的并集,利用set的元素唯一性
    public static String[] union(String[] arr1, String[] arr2) {
        Set<String> set = new HashSet<String>();
        for (String str : arr1) {
            set.add(str);
        }
        for (String str : arr2) {
            set.add(str);
        }
        String[] result = {};
        return set.toArray(result);
    }

    //求两个数组的交集
    public static String[] intersect(String[] arr1, String[] arr2) {
        Map<String, Boolean> map = new HashMap<String, Boolean>();
        LinkedList<String> list = new LinkedList<String>();
        for (String str : arr1) {
            if (!map.containsKey(str)) {
                map.put(str, Boolean.FALSE);
            }
        }
        for (String str : arr2) {
            if (map.containsKey(str)) {
                map.put(str, Boolean.TRUE);
            }
        }

        for (Entry<String, Boolean> e : map.entrySet()) {
            if (e.getValue().equals(Boolean.TRUE)) {
                list.add(e.getKey());
            }
        }

        String[] result = {};
        return list.toArray(result);
    }

    //求两个数组的差集
    public static String[] minus(String[] arr1, String[] arr2) {
        LinkedList<String> list = new LinkedList<String>();
        LinkedList<String> history = new LinkedList<String>();
        String[] longerArr = arr1;
        String[] shorterArr = arr2;
        //找出较长的数组来减较短的数组
        if (arr1.length > arr2.length) {
            longerArr = arr2;
            shorterArr = arr1;
        }
        for (String str : longerArr) {
            if (!list.contains(str)) {
                list.add(str);
            }
        }
        for (String str : shorterArr) {
            if (list.contains(str)) {
                history.add(str);
                list.remove(str);
            } else {
                if (!history.contains(str)) {
                    list.add(str);
                }
            }
        }

        String[] result = {};
        return list.toArray(result);
    }
}
分享到:
评论
1 楼 shaiberni 2010-06-04  
哥,这段代码最后是不是有点问题,B中如果有A中没有的元素的话怎么也被加到差集里面了,难道是我数学没理解对??

相关推荐

    PHP实现对数组简单求交集,差集,并集功能示例

    读者还可以参考相关的专题教程和书籍,如《PHP数学运算技巧总结》、《PHP运算与运算符用法总结》、《PHP字符串(String)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《PHP程序设计算法...

    离散数学实验

    输入方法读取用户提供的集合元素,显示方法用于打印集合内容,交集、并集和差集方法分别实现了对应的集合运算,而笛卡尔积方法则负责生成并打印所有的有序对。 通过实际操作,学生不仅能掌握集合运算的理论知识,还...

    (完整word版)数据结构(C语言版)实验报告集合的交并差.pdf

    实验的目标是创建一个C语言程序,该程序能够处理集合的并集、交集和差集操作。集合元素限定为小写字母,用户通过输入字符串来表示集合,程序会自动过滤非法字符和重复字符。用户与计算机进行交互,根据提示选择操作...

    Redis学习笔记整理

    - **集合**:集合内部是由一个没有重复元素的字符串数组表示,支持交集、并集、差集等操作。 - **有序集合**:与集合类似,但是每个元素都关联了一个分数,可以按照分数进行排序。 - **哈希**:哈希由字段(field)和...

    commons-lang-2.6.zip

    - `CollectionUtils` 提供了集合的高级操作,如分页、过滤、合并、求交集、并集、差集等。 6. **异常处理**: - `ExceptionUtils` 可以获取堆栈跟踪信息、处理异常和包装异常,使异常处理更加灵活。 7. **数学...

    jihe.rar_jihe_visual c

    这个程序旨在帮助用户理解如何处理集合的交集、并集和差集等基本运算。以下是这个项目涉及的相关知识点: 1. **C++ 编程语言**:C++ 是一种中级编程语言,它继承了 C 语言的强大功能,并增加了面向对象编程(OOP)...

    python实验基本数据类型和组合数据类型实验.zip

    集合的交集、并集、差集和补集操作,以及字典的键值对添加、删除、更新等操作。"2.6.py"可能包含了一些逻辑控制结构,如条件语句(if...else)、循环(for、while)等,用于处理组合数据类型。 "约瑟夫环.png"是一...

    Go-go-algorithms-使用golang实现不同的算法和数据结构

    6. **哈希表和集合操作**:演示如何使用Go的内置map实现查找、插入和删除操作,以及集合的交集、并集和差集运算。 7. **堆和优先队列**:实现最小堆和最大堆,用于解决优先级队列问题,如Top K问题。 8. **字符串...

    Python资料分享.

    - **集合**:无序不重复元素的集合,可以进行交集、并集、差集等操作。 4. **字典** - **键值对**:Python的字典是动态大小的关联数组,通过键来访问对应的值。 - **字典方法**:如get()、update()、keys()、...

    Python学习手册(第4版)

    集合是无序的不重复元素序列,支持集合操作如交集、并集和差集。 函数是Python中组织代码的基本单元,书中会阐述如何定义函数、传递参数、返回值以及函数式编程的概念,如高阶函数和闭包。此外,读者还将学习到...

    pythonds.zip

    3. 集合(Sets):无序且不重复的元素集合,支持数学集合操作如交集、并集和差集。 4. 字典(Dictionaries):键值对的无序集合,通过键来访问对应的值,提供快速查找。 5. 字符串(Strings):不可变的字符序列,用于处理...

    实验四 多态性及综合应用

    - **实验内容与要求**:编写一个程序,实现两个整数集合的基本运算,包括并集、差集和交集。具体地,输入两个整数集合{24235}和{2510},输出第一个集合的元素个数以及它们进行集合运算后的结果。 - **实验程序**...

    开源项目-pilosa-pilosa.zip

    位图索引是一种数据结构,通过将数据映射到位数组中,实现了快速的查询和操作,如查找、交集、并集和差集。 在 Pilosa 中,数据被分片存储在多个节点上,这种分布式架构使得系统能够水平扩展,以处理PB级别的数据。...

    这是一份Python自学的笔记,在没有编程基础的情况下总结如何合理,有逻辑的学习Python。在学习Python的过.zip

    掌握集合的交集、并集、差集等操作。 六、字符串处理 1. 字符串操作:学习字符串的拼接、查找、替换、分割等方法。 2. 格式化输出:掌握`f-string`,`%`操作符,以及`str.format()`方法进行字符串格式化。 七、...

    蓝桥杯(Python)相关知识点记录,包含基础知识点,数据结构等算法实现,真题练习

    5. **集合**:无序不重复元素集合,支持交集、并集、差集等操作。 6. **栈**:后进先出(LIFO)数据结构,可用列表实现。 7. **队列**:先进先出(FIFO)数据结构,Python的collections模块提供了Queue和...

    几百个javascript常用小技巧总结

    - `Set`:不包含重复元素的集合,支持交集、并集、差集等操作。 - `Map`:键值对存储,键可以是任何类型,比对象更灵活。 11. **事件委托** - 通过在父元素上监听事件,处理子元素的事件,提高性能和减少内存...

    2021-2022计算机二级等级考试试题及答案No.12686.docx

    3. 获取复选框值:在JSP中,获取一组复选框的值应使用`getParameterValues()`方法,因为复选框可能有多个选中项,返回的是字符串数组。 4. 计算机存储器:计算机的存储系统包括内存(RAM)和外存(如硬盘、U盘等)...

    程序设计-我们的数据类型.pptx

    - 集合(Set):无序且不重复的数据集合,支持交集、并集、差集等操作。 - 映射/字典(Dictionary/Map):由键值对组成的无序集合,通过键来查找对应的值。 3. 数据类型的操作: - 赋值:通过等号(=)将一个值...

    高效程序的奥秘_Hackers_Delight_2nd

    书中将探讨如何利用位操作进行位图的布尔运算,如并集、交集和差集。 9. **算法优化**:书中涵盖了许多经典的算法优化技术,如动态规划、贪心算法和分治策略,并结合位操作进行深入讲解,帮助程序员写出更优的解决...

    2021-2022计算机二级等级考试试题及答案No.14281.docx

    - 集合是一个无序的不重复元素序列,常用于成员关系测试、去重、交集、并集和差集操作。两者都支持数学集合操作。 以上知识点详细解释了计算机二级考试中涉及到的编程基础、数据库管理、网络、操作系统、编程语言...

Global site tag (gtag.js) - Google Analytics