java经典算法-day1

举报
喵手 发表于 2024/09/30 22:35:13 2024/09/30
【摘要】 哈喽,各位小伙伴们好,我是喵手。一、前言       正值金三银四好时节,又到了刷算法题日。xdm,有空的大家一起来呀。无论你是挤公交还是坐地铁时间,随时随地皆可,你可以不用实操,你只需要看题并思考,完后有空coding就好了。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。二、题目描述:题目1:    统计一段英语句子中带有多少个“o”的字符。题目2:    判断闰年平年并且输出...


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

一、前言

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

二、题目描述:

题目1:

    统计一段英语句子中带有多少个“o”的字符。

题目2:

    判断闰年平年并且输出某月的天数。

三、思路分析:

题1:统计一段英语句子中带有多少个“o”的字符。

  • 首先、最先想到的就是对这个句子整体进行一次循环遍历。
  • 先定义一个count计数,然后每次循环都判断是否是匹配字符‘o’,若是匹配到是字符串‘o’,就进行count++。
  • 否则直接跳过。
  • 最后返回count即为题解。

题2:判断闰年平年并且输出某月的天数。

首先我们先得了解如何判断是否闰年?如下是闰年的规则,。

  • 年份能被 4 整除。
  • 年份若是 100 的整数倍,须被 400 整除,否则是平年。

如下是解题思路啊:

  • 我们先定义一个判断是否平年闰年的计算方法,入参就是年份,然后出参返回一个布尔值,是闰年就返回true,否则返回false。
  • 结合判断平闰年方法进行月份天数输出。
  • 已知每个月具体天数,所以我们可通过枚举1-12月的天数即可。
  • 唯独就是平闰年天数的改变,这可以在一开始就判断年份,单独把2月的天数进行一个零时变量控制,是闰年就赋值29,平年就赋值28。

四、算法实现:

题1AC代码:

/**
 * 判断英语句子中,出现o的次数为多少?
 */
public static void count() {
    String word = "Whatever is worth doing is worth doing well.";
    //统计o出现次数
    int count = 0;
    //进行循环遍历
    for (int i = 0; i < word.length(); i++) {
        //获取当前i位置的字符
        char c = word.charAt(i);
        //若是字符o
        if (c == 'o') {
            //次数加一
            count++;
            continue;
        }
    }
}

题2AC代码:

1、我们先定义一个判断是否平年闰年的计算方法,入参就是年份,然后出参返回一个布尔值,是闰年就返回true,否则返回false。

/**
 * 判断是否闰年。
 */
public static boolean isRn(int year) {
    //判断是否是闰年.条件成立其一就是闰年。
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        System.out.println(year + "年是闰年哦");
        return true;
    }
    System.out.println(year + "年是平年哦");
    return false;
}

2、结合判断平闰年方法进行月份天数输出。

/**
 * 手动判断月份返回天数
 */
public static void returnDayNum(int year, int month) {
    //默认平年2月天数。
    int twoMonth = 28;
    int days = 0;
    //先判断是否闰年
    if (isRn(year)) {
        twoMonth = 29;
    }
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            days = 31;
            break;
        case 2:
            days = twoMonth;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            days = 30;
            break;
        default:
            days = 0;
            break;
    }
    System.out.println("你查询的" + year + "年" + month + "月份有" + days + "天");
}

五、总结:

       这两题其实就是在考察我们所学的java基础之循环控制流程,如果对java的流程控制基本掌握,那么这两道题基本就是秒杀,第一道是遍历考察,第二道无非多了一个平闰年条件+switch语句判断,别的基本都没考察。

       如果你有更好的解题思路或者想法,欢迎评论区留言告诉我。

六、文末:

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

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

wished for you successed !!!

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

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

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

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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