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);
            }
        }
    }
}

测评结果

相关推荐
UQR1 小时前
一、Java基础高频面试题
java·开发语言
AC赳赳老秦1 小时前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw
上海云盾商务经理杨杨1 小时前
Tomcat 弱配置漏洞渗透实战!批量 getshell 高频漏洞
java·web安全·tomcat
10mAh2 小时前
【Linux】error while loading shared libraries 怎么解决?——ldd、RPATH 与动态链接排错
java·linux·前端
深念Y2 小时前
stable-diffusion.cpp 的 FLUX.2 Klein 9B 分步
java·前端·数据库
阿pin2 小时前
Java随笔-红黑树
java·python·算法·红黑树
我命由我123452 小时前
Jetpack Compose - @Preview 注解
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
为美好的生活献上中指2 小时前
Spring AI Advisor 深度实战:构建严谨的 AI Agent 拦截链
java·人工智能·spring·advisor·aiagent
ruofu332 小时前
如何让docker使用提前下载好的镜像,而不是在线拉取
java·spring cloud·docker