关键字标识

2024-05-09 13:52
文章标签 关键字 标识

本文主要是介绍关键字标识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

给定一个关键词集合 words 和一个字符串 inputStr,要求将 inputStr 中出现的所有关键词用标签标记:

关键词标签的起始为,结束为
把可以合并的标签进行合并,即使用最少的标签。合并规则如下:
关键词相邻则进行合并,如 ab、cd为关键词,且在字符串中相邻,则合并为 abcd
关键词相交则进行合并,如 zhi、hid为关键词,且在字符串中相交,则合并为 zhid

解答要求

时间限制:1000ms, 内存限制:256MB

输入

第1行一个整数 count,表示 words 中的关键词的个数,取值范围:[1, 64]
第2行 count 个字符串,表示关键字词列表 words,每个关键词仅含英文小写字母,长度范围:[1,16]
第3行一个字符串 inputStr,仅含英文小写字母(无空格),长度范围:[1,512]

输出

一个用最少关键词标签标记的字符串

样例

输入样例 1

4
cd df op qr
opqracdfg

输出样例 1

<b>opqr</b>a<b>cdf</b>g

提示样例 1

关键词 op qr 出现在字符串中,且在字符串中相邻,因此可合并为 opqr;
cd df 出现在字符串中,且在字符串中相交,因此可合并为 cdf ;
其它字符保持不变。
处理后为 <b>opqr</b>a<b>cdf</b>g,使用了 2 个标签 。
<b>op</b><b>qr</b>a<b>cd</b><b>df</b>g也是一种标记方式,但关键词未作合并,需要用到 4 个标签,标签个数不是最少的。

输入样例 2

3
abbb def bbg
aabbbgz

输出样例 2

a<b>abbbg</b>z

提示样例 2

关键字abbb和bbg合并为abbbg

Java算法源码

import java.nio.charset.StandardCharsets;
import java.util.Scanner;
import java.util.HashSet;
import java.util.Scanner;public class Main {// 待实现函数,在此函数中填入答题代码private static String getTaggedString(String[] words, String inputStr) {HashSet<String> wordSet = new HashSet<>(Arrays.asList(words));int[] result = setAllPos(wordSet, inputStr);if (result.length == 0) {return inputStr;}StringBuilder sb = new StringBuilder();for (int i = 0; i < result.length; i++) {if (result[i] == 1) {sb.append("<b>").append(inputStr.charAt(i)).append("</b>");} else {sb.append(inputStr.charAt(i));}}String convertStr = sb.toString();convertStr = convertStr.replace("</b><b>", "");return convertStr;}private static int[] setAllPos(HashSet<String> wordSet, String inputStr) {int len = inputStr.length();int[] result = new int[inputStr.length()];for (int i = 0; i < len; i++) {for (int j = i + 1; j <= len; j++) {if (wordSet.contains(inputStr.substring(i, j))) {for (int k = i; k < j; k++) {result[k] = 1;}}}}return result;}public static void main(String[] args) {Scanner cin = new Scanner(System.in, StandardCharsets.UTF_8.name());cin.nextLine();String[] words = cin.nextLine().split(" ");String inputStr = cin.nextLine();cin.close();String result = getTaggedString(words, inputStr);System.out.println(result);}
}

这篇关于关键字标识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/973581

相关文章

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Java中的volatile关键字多方面解析

《Java中的volatile关键字多方面解析》volatile用于保证多线程变量可见性与禁止重排序,适用于状态标志、单例模式等场景,但不保证原子性,相较synchronized更轻量,但需谨慎使用以... 目录1. volatile的作用1.1 保证可见性1.2 禁止指令重排序2. volatile的使用

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时

Java 关键字transient与注解@Transient的区别用途解析

《Java关键字transient与注解@Transient的区别用途解析》在Java中,transient是一个关键字,用于声明一个字段不会被序列化,这篇文章给大家介绍了Java关键字transi... 在Java中,transient 是一个关键字,用于声明一个字段不会被序列化。当一个对象被序列化时,被

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

c# checked和unchecked关键字的使用

《c#checked和unchecked关键字的使用》C#中的checked关键字用于启用整数运算的溢出检查,可以捕获并抛出System.OverflowException异常,而unchecked... 目录在 C# 中,checked 关键字用于启用整数运算的溢出检查。默认情况下,C# 的整数运算不会自