当前位置 : 主页 > 编程语言 > java >

java经典算法-day1

来源:互联网 收集:自由互联 发布时间:2022-09-29
哈喽,各位小伙伴们好,我是喵手。 一、前言 正值金九银十好时节,又到了刷算法题日。xdm,有空的大家一起来呀。无论你是挤公交还是坐地铁时间,随时随地皆可,你可以不用实操

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

一、前言

       正值金九银十好时节,又到了刷算法题日。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 !!!

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

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

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

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

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


网友评论