java算法:随机生成英文单词表快速查询含有和不含有的单词(不考虑大小写)

列如输入字符串a,就会查询所有含a的单词和不含有a的单词,输入ab就会查询有a和b

package test5;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Five {
    static Set<String> list = new HashSet<String>();
    static Set<String> list2 = new HashSet<String>();
    static Set<String> list1 = new HashSet<String>();

    // 生成大小写6位数字母作为字典
    public static String ranDom() {
        String sum = "";
        // 1.创建一个长度为62的字符数组
        char[] chars = new char[52];
        // 2.使用循环给字符数组里面塞满字符
        for (int i = 0; i < 26; i++) {
            // 记住:char本质上就是数字
            // 'a' + i ==> 97 + i

            // 0~25的位置,放小写字母
            chars[i] = (char) ('a' + i);

            // 26~51的位置放大写字母
            chars[i + 26] = (char) ('A' + i);

        }
        // System.out.println( chars );

        // 3.创建Random对象
        Random ran = new Random();
        // 4.循环6次,每次得到一个0~61之间的随机数字
        char[] result = new char[6];
        for (int i = 0; i < result.length; i++) {
            // 5.根据随机数字,从字符数组里面获取一个字符出来
            // 把获取得到的字符,放到新的字符数组里面
            int index = ran.nextInt(chars.length);

            // 从字符数字里面获取一个字符出来
            char c = chars[index];

            sum = sum + c;

        }
        return sum;
    }

    // 把输入的字符串转为字符查询英文字典里面是否有
    public static void quickSearch(char[] arr, String[] a2, String str) {
        for (int j = 0; j < arr.length; j++) {

            for (int i = 0; i < a2.length; i++) {
                // 输入的字符串换为字符转为小写是否在字典里面
                int n = a2[i].toLowerCase().indexOf(arr[j]);
                // 输入的字符串转为小写是否在字典里面
                int s = a2[i].toLowerCase().indexOf(str);

                if (n >= 0 && s >= 0) {
                    // 查询到存在list里面
                    list.add(a2[i]);

                } else {
                    // 查询不到存在list2里面
                    list2.add(a2[i]);

                }

            }

        }

        System.out.println("单词表查询到单词:");

        int i = 0;
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {

            if (i % 20 == 0 & i != 0)
                System.out.println();
            System.out.print(iterator.next() + " ");
            i++;
        }
        System.out.println();
        System.out.println();
        System.out.println("单词表查询不到单词:");
        System.out.println();
        int j = 0;
        Iterator<String> iterator1 = list2.iterator();
        while (iterator1.hasNext()) {

            if (j % 20 == 0 & j != 0)
                System.out.println();
            System.out.print("-" + iterator1.next() + " ");
            j++;
        }

    }

    public static void test() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串");
        // 将十万个随机组成的6位数英文单词作为字典存进set集合里面
        for (int i = 0; i < 100000; i++) {
            String a = ranDom();
            list1.add(a);

        }
        String[] a2 = list1.toArray(new String[0]);
        // String[] a1= {"user","she","hi","where","under"};
        String str = sc.next();
        // 把输入的字符大写转为小写
        char[] arr = str.toLowerCase().toCharArray();

        quickSearch(arr, a2, str);

    }

    public static void main(String[] args) {
        test();
    }

}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值