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

测评结果

相关推荐
别动我齐刘海4 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
code2cat5 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe5 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码5 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
wewowilling6 小时前
认识微服务
java·运维·微服务·springcloud
代码什么用6 小时前
Java Web 7-10
java·servlet
蜗牛互联网7 小时前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
java·人工智能·后端
SL_staff8 小时前
运维救火实录:钉钉考勤API变更引发工资计算异常,我们用JVS-Logic可视化逻辑引擎实现分钟级热修复
java·mysql·全栈
SunnyDays10118 小时前
Java 查找并高亮 Word 文字:精确查找及正则表达式模糊查找
java·查找文字·word 文档·高亮文字·正则匹配查找·模糊查找