总结不易,如果对你有帮助,请点赞关注支持一下
微信搜索程序dunk,关注公众号,获取博客源码、数据结构与算法笔记、面试笔试题
合成词展开(AC)
时间限制: 3000MS
内存限制: 589824KB
题目描述:
苏克·冯·望杜是印度著名的人工智能科学家。你正在试着阅读他的文章。但望杜写文章有个习惯,就是喜欢自己造词。他会利用现有的单词拼接上英语的一些前缀和后缀来快速造出一些新词。有些新词的组合十分复杂,读上去让人头大。作为程序员的你,很自然的想到可以写段代码把这些复杂的单词展开成词组以便理解。
已知的单词前缀和对应的含义有:
anti<word>: against <word>
post<word>: after <word>
pre<word>: before <word>
re<word>: <word> again
un<word>: not <word>
已知的单词后缀和对应的含义有:
<word>er: one who <word>s
<word>ing: to actively <word>
<word>ize: change into <word>
<word>tion: the process of <word>ing
<word>ful: full of <word>
注意:后缀与原单词的关系更加紧密,所以需要最后展开。如果同时存在多个前缀和后缀,应以原单词为中心,前缀从右到左、后缀从左到右依次展开。举个例子,unmodelize 的展开顺序如下:
unmodelize
not modelize
not change into model
虽然以上定义不是完全准确,但阅读起来不影响理解。
输入描述
输入信息为一个待展开的单词,所有字母均为小写,不含空格
输出描述
按照题意进行展开后的单词
样例输入
unmodelize
样例输出
not change into model
方法一
这道题写了整整1个小时20分钟
先处理前缀,再处理后缀:写的时候思路特别乱,一开始只通过了91%,提示TLE了然后改啊改啊,终于AC了
public class Main {
/*请完成下面这个函数,实现题目要求的功能
当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^
******************************开始写代码******************************/
static Map<String, String> preMap;
static Map<String, String> postMap;
static String worder;
static String unwangdulize(String word) {
preMap = new HashMap<>();
postMap = new HashMap<>();
preMap.put("anti", "against word");
preMap.put("post", "after word");
preMap.put("pre", "before word");
preMap.put("un", "not word");
preMap.put("re", "word again");
postMap.put("re", "one who words");
postMap.put("gni", "to actively word");
postMap.put("ezi", "change into word");
postMap.put("noit", "the process of wording");
postMap.put("luf", "full of word");
worder = word;
String preWord = prefix(worder);
String nowWord = worder;