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

测评结果

相关推荐
智慧物业老杨32 分钟前
物业日常巡查的数智化重构:从“打卡式巡检“到“闭环式风控“
android·java·人工智能·系统架构·rxjava
步行cgn7 小时前
Spring c 命名空间注入详解
java·后端·spring
明月_清风7 小时前
Maven 到底是什么?一篇文章搞懂 Java 项目构建与依赖管理
java·后端·maven
aramae8 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
Rain的Java大神之路8 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
Wang's Blog9 小时前
Java 接入Redis: 通用命令与键管理
java·服务器·redis
Wang's Blog9 小时前
Java 接入Redis: 列表集合与有序集合操作命令
java·服务器·redis
Ivanqhz9 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
qq_25183645710 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
caoerzhong11 小时前
JeeWMS 开源仓库管理系统全景解读:一套 Java WMS 如何把 WMS/OMS/BMS/TMS 装进同一个系统
java·开源