首页 > 其他分享 >机构名称匹配问题

机构名称匹配问题

时间:2024-04-02 11:25:21浏览次数:377  
标签:匹配 name fullnames 机构名称 铁路 Li 问题 String

n 问题描述

在招投标信息管理系统中,准确匹配和标注机构名称对于文档管理和信息检索至关重要。基于一个预设的机构全程列表,为每条文档信息自动打上机构标签。这一任务在实际操作中面临诸多挑战,尤其是同一机构可能使用多种不同的名称表述方式,包括全称、简称、别称等。例如,同一机构可能在不同的文档中以“中华人民共和国国家发展和改革文员会”、“国家发改委”、“发改委”等不同名称出现。

给定待匹配文档中的机构名称S和包含N个机构全称的列表L,根据本题目的假设定义,输出L中的所有与S匹配的机构全称列表LS。

假设判断机构名称S与L中的一个机构全称Li是否匹配的定义如下:

(1) 计算S和Li的最长公共子序列:即找出S和Li中公有的、最长的汉字序列。这个序列中的汉字不需要在每个机构名称中连续出现,但在两个名称中的顺序必须是一致的。

例如:S=“国家发改委部门”,Li=“中华人民共和国国家发展和改革委员会”,S和Li的最长公共子序列为“国家发改委”。

(2) 计算最长公共子序列长度占S和Li中较短长度的比例。

(3) 如果长度占比大于等于80%,则认为Li与S匹配,并将Li加入到匹配列表LS中;否则,不加入。

提示:1≤N≤100,2≤机构名称长度≤20

n 要求:

完成题目对应的程序模板(OrgNameMatch)中的方法:

String[] match(String name, String[] fullnames);

该方法的入口参数name为给定的机构名称,fullnames为给定的机构全称列表。

最后返回结果为所有匹配的机构全称列表LS

n 样例:

n 样例1:

输入:name=“中国铁路部”,fullnames=[“中国铁路总公司”,“中华铁路集团”,“中国铁路工程集团”]

输出:[“中国铁路总公司”,“中国铁路工程集团”]

解释:给定的别称“中国铁路部”与“中国铁路总公司”和“中国铁路工程集团”的最长公共子序列都是“中国铁路”,相似度都是80%,等于设定的阙值80%。

因此,这两个全称都被视为匹配。而“中华铁建集团”与简称“中国铁路部”的相似度为40%,未达到阙值,不被视为匹配。

样例2:

输入:name = "国家电力", fullnames = ["国家电网公司", "国家电力投资 集团公司“,”国际电力发展公司"]

输出:[“国家电力投资集团公司”]

 

static String[] match(String name, String[] fullnames) {
        List<String> ansL = new ArrayList<String>();
        for (int i = 0; i < fullnames.length; i++) {
            char[] keys = name.toCharArray();
            double num = 0;
            for (int j = 0; j < keys.length; j++) {
                if (fullnames[i].contains(String.valueOf(keys[j]))) {
                    num++;
                }
            }
            if (num / name.length() >= 0.8) {
                ansL.add(fullnames[i]);
            }
        }
        return ansL.toArray(new String[ansL.size()]);
    }

    public static void main(String[] args) {
        String name = "中国铁路部";
        String[] fullnames = {"中国铁路总公司","中华铁路集团","中国铁路工程集团"};
        String[] ans = match(name, fullnames);
        for (int i = 0; i < ans.length; i++) {
            System.out.print(" " + ans[i]);
        }
        System.out.println();
        System.out.println("============================================");
        name = "国家电力";
        String[] fullnames_1 = {"国家电网公司","国家电力投资集团公司", "国际电力发展公司"};
        String[] ans_1 = match(name, fullnames_1);
        for (int i = 0; i < ans_1.length; i++) {
            System.out.print(" " + ans_1[i]);
        }
        System.out.println();
    }

 

标签:匹配,name,fullnames,机构名称,铁路,Li,问题,String
From: https://www.cnblogs.com/Alisa-zmj/p/18110184

相关文章

  • 比特币钱包地址生成问题
    l 问题描述:比特币钱包负责管理私钥,在收款时往往会展示钱包地址。钱包地址的生成步骤如下(如图所示):获取私钥对应的公钥,再根据公钥计算公钥哈希值(ripemd160函数),得到一个20字节长度的字节数组;1.在公钥哈希值前面添加比特币地址版本号(1个字节,当前默认为0x00);2.对步骤1得到的数据进......
  • 用画镜播放器看奈飞的问题汇总
    画镜播放器作为唯一一个操作简易,效果稳定,并且完全免费看奈飞的工具,非常火爆。但是它也存在一些问题,这里分享一下我用画镜的一些心得,让大家不至于踩坑。Video点iamok点in,这是他们官网1、 使用中,发现没有全屏按钮,点击全屏无效!这里需要在键盘按F11就是全屏了2、 提示未引用对象的......
  • socket.io 跨域 cors.origin 的值,用于解决跨域问题
    在使用socket.io库时,对于实现跨域资源共享(CORS:Cross-OriginResourceSharing)的配置,您需要设置服务器的CORS选项来允许特定来源的请求或所有来源的请求。当创建或配置socket.io服务器时,CORS相关的设置通常是在初始化服务器时作为选项提供的。下面是几种不同的socke......
  • 2024前端vue面试问题以及答案
    Vuex相关问题Vuex是什么,它解决了什么问题?Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex的核心概念有哪些?State:存储所有组件的状态。Getters:类似于计算属......
  • 《拆解一切问题》如何成为解决难题的高手 - 三余书屋 3ysw.net
    拆解一切问题:如何成为解决难题的高手今天给大家分享的这本书叫做《拆解一切问题》,标题看起来确实有点虚,在没有读这本书之前,会让人感觉似乎只要读完学会书中的内容,就可以解决一切问题了。但事实上这种认识是误解,并没有什么问题的解决可以采用通用的方法。不过,作者在文中聊到的......
  • 每日一题 --- 找出字符串中第一个匹配项的下标[力扣][Go]
    找出字符串中第一个匹配项的下标题目:28.找出字符串中第一个匹配项的下标给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果needle不是haystack的一部分,则返回-1。示例1:输入:haystack="sa......
  • vant-weapp 提供的areaList城市数据的路径问题
    根据vant官网提供的引入方法会报错。通过add@vant/area-data会下载一份index.esm.mjs文件城市数据在项目中,我尝试了用各种路径来获取还是报错,最后只能将该index.esm.mjs文件复制到其他文件中,然后引入就可以了。 1.新建一个文件夹专门放数据的,然后在建个文件用来放这个......
  • 关于用栈和队列分别解决走迷宫问题的方法讨论(参与者:陈卓,毛敏磊)
    对于生活中最常见的小游戏——走迷宫,相信大家都不陌生,人为走相信大家都会走,但能不能用代码实现,我们认为是可以的,以下是我们对如何走迷宫的一些看法和代码实现(cz负责队列解决,mml负责用栈解决):1.关于用队列解决:先简单介绍一下队列:队列是一种操作受限的线性表,只允许在表的一端进行插......
  • Ubuntu20.04如何永久修改同一时间打开文件数上限以及解决Too many open files问题
       近期遇到一个问题,写的代码同一时间维护的tcp链接过多,导致linux的文件句柄达到上限,出现Toomanyopenfiles的问题。网上大多回答混乱,在这里做个总结,提醒日后使用。1.查看命令ulimit-a2.临时的修改,关闭终端失效ulimit-n204800或ulimit-SHn204800  //S代......
  • 评测机队列(牛吃草问题)
    1.问题2.解决2.1分析关键思路是利用好支点,这里具体评测机的评测速度是未知的,但是我们写出方程组则可以发现,该速度是可以约去的,这时我们不妨设置为最简单的1个程序/min2.2代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn1=8,t1=30,n2=10,......