java经典算法-day19

举报
喵手 发表于 2024/09/30 22:53:21 2024/09/30
【摘要】 哈喽,各位小伙伴们好,我是喵手。一、前言正值金三银四好时节,又到了刷题月。xdm,有空的欢迎一起呀。无论你是挤公交还是坐地铁时间,随时随地皆可刷...你可以不用实操,你只需要看题思考,完后有空coding就好呀。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。二、题目描述:题目1:计算字符串中子串出现的次数。题目2:给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,...


哈喽,各位小伙伴们好,我是喵手。

一、前言

正值金三银四好时节,又到了刷题月。xdm,有空的欢迎一起呀。无论你是挤公交还是坐地铁时间,随时随地皆可刷...你可以不用实操,你只需要看题思考,完后有空coding就好呀。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。

二、题目描述:

题目1:

计算字符串中子串出现的次数。

题目2:

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

三、思路分析:

题1分析:

       很简单,就是把可以组成子串长度的字符串都进行循环,每循环一次,主串就往后移一个字符,然后将进行字符串截取,依次与子串进行判断是不是相同,是就+1。

题2分析:

先排序,首先将数组排序。

如果数组中全是非负数,则排序后最大的三个数相乘即为最大乘积;如果全是非正数,则最大的三个数相乘同样也为最大乘积。

如果数组中有正数有负数,则最大乘积既可能是三个最大正数的乘积,也可能是两个最小负数(即绝对值最大)与最大正数的乘积。

综上,我们在给数组排序后,分别求出三个最大正数的乘积,以及两个最小负数与最大正数的乘积,二者之间的最大值即为所求答案。

四、算法实现:

题1AC代码:

public static int countStr(String str, String allStr) {

    //如果子串长度大于主串长度,直接返回
    if (str.length() > allStr.length()) {
        return 0;
    } 
    //统计字符串出现次数 
   int sum = 0;
    //计算匹配次数
    int count = allStr.length() - str.length() + 1;
    //循环匹配
    for (int i = 0; i < count; i++) {
        //截取与str等长的子串
        String subStr = allStr.substring(i, i + str.length());
        //进行判断二者是否相等
        if (subStr.equals(str)) {
            sum++;
            continue;
        }
    }
    return sum;
}

题2AC代码:

public static int maximumProduct(int[] nums) {

    //排序
    Arrays.sort(nums);
    //分如下两种情况
    int sum1 = nums[0] * nums[1] * nums[nums.length - 1];
    int sum2 = nums[nums.length - 3] * nums[nums.length - 2] * nums[nums.length - 1];

    //两值进行比较,返回最大值
    return Math.max(sum1, sum2);
}

五、总结:

综上所述,这两道题也相对简单点,第一道直接遍历然后将每一次子串进行判断统计次数即可。第二道题就是通过排序然后按不同情况分别计算,最后再取最大值即可,这里考虑到的就是有可能值会出现负数,但是负负得正,这点特别需要注意。

如果你有更好的解题思路或者想法,欢迎评论区留言告诉我哦,喵手感激不尽。

六、文末:

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

... ...
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

---------------------------------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

---------------------------------------------------------------------

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。