目录
1507. 转变日期格式
605.种花问题
1507. 转变日期格式
给你一个字符串 date
,它的格式为 Day Month Year
,其中:
Day
是集合{"1st", "2nd", "3rd", "4th", ..., "30th", "31st"}
中的一个元素。Month
是集合{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}
中的一个元素。Year
的范围在 [1900, 2100]
之间。
请你将字符串转变为 YYYY-MM-DD
的格式,其中:
YYYY
表示 4 位的年份。MM
表示 2 位的月份。DD
表示 2 位的天数。
示例 1:
输入:date = "20th Oct 2052" 输出:"2052-10-20"
示例 2:
输入:date = "6th Jun 1933" 输出:"1933-06-06"
示例 3:
输入:date = "26th May 1960" 输出:"1960-05-26"
思路:【例子:"20th Oct 2052"】
1.首先,创建一个字符串数组,并且采用split()方法将每个字符串提取出来
2.年份:直接将字符串数组中下标为2的元素包装为Integer即可
日:由于字符串数组中下标为0的元素包含th,因此摘取一部分再包装为Integer类型
月份:创建一个方法【采用switch-case】
最后将年月日格式化为%04d-%02d-%02d --> String.format()
class Solution {
public String reformatDate(String date) {
String[] str = date.split(" ");
int year = Integer.parseInt(str[2]);
int month = monthchange(str[1]);
int day = Integer.parseInt(str[0].substring(0, str[0].length() - 2)); // -2即减去th
// 注意:substring()第二个s小写!!str[0].length()要加括号
// 格式化
return String.format("%04d-%02d-%02d", year, month, day);
}
public int monthchange(String month) {
switch (month) {
case "Jan":
return 1;
case "Feb":
return 2;
case "Mar":
return 3;
case "Apr":
return 4;
case "May":
return 5;
case "Jun":
return 6;
case "Jul":
return 7;
case "Aug":
return 8;
case "Sep":
return 9;
case "Oct":
return 10;
case "Nov":
return 11;
case "Dec":
return 12;
default:
return -1;
}
}
}
605.种花问题
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给你一个整数数组 flowerbed
表示花坛,由若干 0
和 1
组成,其中 0
表示没种植花,1
表示种植了花。另有一个数 n
,能否在不打破种植规则的情况下种入 n
朵花?能则返回 true
,不能则返回 false
。
思路:
题目要求为每棵树不可相邻
1.首先需知道一个条件:n>0
2.在遍历当前的位置时,有三种情况:
①当该位置的值为1时,即有树,这个时候我们为了不相邻种树,的值要加2:i+=2
②可添加树:当该位置为最后一个元素是,可添加树,且颗数-1,i+2
(因为在这几种情况中,我们已经保证i跳转到与前一棵树不相邻的位置了,且后面没有元素了,如果有就是以下情况)
当该位置的下一个位置的元素值为0时,可添加树,且颗数-1,i+2
(这就是在中间可种树的情况,同样,我们已经保证i跳转到与前一棵树不相邻的位置了,再者,当前位置的下一棵树仍为空,因此在此种树不会与下一棵树相邻)
③当那个以上情况都不满足时,i就得+3了。如:i=0时 --> 0 1 0
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
for(int i = 0 ; i<flowerbed.length&&n>0;){
if(flowerbed[i] == 1){
i+=2;
}
else if(i == flowerbed.length - 1 || flowerbed[i+1] == 0){
n--;
i+=2;
}
else
i+=3;
}
return n == 0; //直接用n是否等于0来返回结果
}
}