UVA10391

UVA10391 复合词 Compound Words

题目描述

PDF

输入格式

输出格式

输入输出样例 #1

输入 #1

java 复制代码
a
alien
born
less
lien
never
nevertheless
new
newborn
the
zebra

输出 #1

java 复制代码
alien
newborn

题目大意

你需要找出词典中所有由两个单词构成的复合词。双词复合词指词典内的某个单词,该单词恰好由词典中另外两个单词拼接而成。

输入格式

标准输入包含若干小写单词,每行一个,单词按字母顺序排列,单词总数不超过 120000 个。

输出格式

你需要输出所有符合条件的复合词,每行输出一个,保持字母升序排列。

解题思路

先读取所有单词,一份存入哈希集合方便快速查找,另一份存入顺序列表保留原本输入次序。之后逐个取出列表里的单词,尝试在不同位置把单词切割成前后两段,只要有一种切分方式得到的两段文字都存在于集合里,就认定这个词是复合词并进行输出。这段代码还有一处问题,切割起点不能从零开始,不然会切出空字符串导致判断出错。

完整代码

java 复制代码
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class CompoundWords {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Set<String> words = new HashSet<String>();
        ArrayList<String> wordList = new ArrayList<>();
        while(sc.hasNextLine()) {
            String word = sc.nextLine().trim();
            words.add(word);
            wordList.add(word);
        }
        sc.close();
        for (int i = 0; i < wordList.size(); i++) {
            String currentWord = wordList.get(i);
            boolean flag = false;
            for(int j = 0; j < currentWord.length() ; j++) {
                String left = currentWord.substring(0, j);
                String right = currentWord.substring(j);
                if(words.contains(left) && words.contains(right)) {
                    flag = true;
                    break;
                }
            }
            if(flag) {
                System.out.println(currentWord);
            }
        }
    }
}

测评结果

相关推荐
AI你一生一世4 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影4 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯4 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
海的透彻8 小时前
dockerfile如何快速构建容器(java服务)
java·开发语言
code2cat9 小时前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle
后台模板学习9 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
w_zero_one9 小时前
算法--构造
java·数据结构·算法
SL_staff10 小时前
制造业订单交付崩盘?用四层协同框架重建交付可信度(技术实践)
java·产品·全栈
SL_staff10 小时前
打破风控迭代死循环:用决策编排重构业务与技术协作链路
java·产品·全栈
Mikko711 小时前
Redis 连接数满了服务端有错误信息吗?连接数不增加却命令超时?6.2 实测连接池、超时与大 key 怎么判定
java·spring boot·redis·后端