【刷题第五天】leetcode720. 词典中最长的单词

题目
给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。

若无答案,则返回空字符串。

思路:
暴力解法,先排序,然后从数组倒序进行遍历,看其子串是否在前面出现过

代码:

public String longestWord(String[] words) {

        //对原数组中的元素排序
        Arrays.sort(words);
        String result = "";
        int longest = 0;
        List<String> ans = new ArrayList<>();
        for (int i = words.length - 1; i >= 0; i --) {
            String word = words[i];
            for (int j = 1; j < word.length();j++) {
                String substring = word.substring(0,j);
                boolean isContains = Arrays.asList(words).contains(substring);
                if (isContains) {
                    if (j == word.length() -1) {
                        if (ans.size() == 0) {
                            ans.add(word);
                            longest = word.length();
                        }else {
                            if (word.length() >= longest) {
                                ans.add(word);
                                longest = word.length();
                            }
                        }

                    }
                    continue;
                } else {
                    break;
                }
            }
            if (word.length() == 1) {
                if (ans.size() == 0) {
                    ans.add(word);
                    longest = word.length();
                }else {
                    if (word.length() >= longest) {
                        ans.add(word);
                        longest = word.length();
                    }
                }
            }

        }
        Arrays.sort(ans.toArray());
        if (ans.size() == 0) {
            return "";
        } else {
            return ans.get(ans.size()-1);
        }

    }```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值