查看: 904| 回复: 0
跳转到指定楼层
上一主题 下一主题
收起左侧

[字符串] 字符串乘积问题

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
最近这题在两个面试中都遇到了 请大家帮忙看看

给两个字符串s1, s2, scoreWordPair返回一个score, score = 0 如果s1, s2有相同的字符,否则score = s1.length() * s2.length(). 输入一个字符串的array, 找出score最大的两个字符串。

请问除了两个for loop 的暴力解法,还有什么更好的方法吗?(我给出了暴力解法和一些提前终止loop的优化)

public class HighestPair {
    public static final String[] WORDS = {
            "something",
            "red",
            "anything",
            "green",
            "mother",
            "yellow",
            "father",
            "blue",
            "foo",
            "purple",
            "bar",
            "orange",
            "baz",
            "black",
            "white",
    };

    public static void main(String[] args) throws Exception {
        String[] words = WORDS;

        // The following is a big dataset:
        // Charset charset = Charset.forName("ISO-8859-1");
        // List<String> result = Files.readAllLines(Paths.get("./data/words_en.txt"), charset);
        // words = result.toArray(words);

        String[] pair = findHighestScoringPair(words);
        System.out.printf("Highest scoring pair of words is '%s' and '%s' with a score of %d.", pair[0], pair[1], scoreWordPair(pair[0], pair[1]));
    }

    private static int scoreWordPair(String w1, String w2) {
        // TODO
    }

    private static String[] findHighestScoringPair(String[] words) {
    //TODO
    }
}

评分

参与人数 1大米 +12 收起 理由
14417335 + 12

查看全部评分


上一篇:美国公司OA中可以直接用库里面的算法吗
下一篇:(已结束)发工资啦,LC每日一题全勤7月
您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表