[Java/LeetCode]算法练习:转变日期格式(1507/simple)
1 题目描述
给你一个字符串 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"
提示:
给定日期保证是合法的,所以不需要处理异常输入。
通过次数11,760提交次数19,952
2 解题思路与代码
2.1 原始解决方法
2.1.1 思路(略)
2.1.2 源码(Java)
class Solution {
public String reformatDate(String date) {
Map<String, String> monthMap = new HashMap<>();
monthMap.put("Jan", "01");
monthMap.put("Feb", "02");
monthMap.put("Mar", "03");
monthMap.put("Apr", "04");
monthMap.put("May", "05");
monthMap.put("Jun", "06");
monthMap.put("Jul", "07");
monthMap.put("Aug", "08");
monthMap.put("Sep", "09");
monthMap.put("Oct", "10");
monthMap.put("Nov", "11");
monthMap.put("Dec", "12");
String [] dateArray = date.split(" ");
StringBuilder resultStrBuilder = new StringBuilder();
resultStrBuilder.append(dateArray[2]+"-");//year
resultStrBuilder.append(monthMap.get(dateArray[1])+"-");//month
resultStrBuilder.append(String.format("%02d", Integer.valueOf(dateArray[0].substring(0, dateArray[0].length()-2))));//day
return resultStrBuilder.toString();
}
}
2.2 官方解法
思路
\]
\]
\]
\]
\]
\]
代码如下。
源码(Java)
class Solution {
public String reformatDate(String date) {
String[] months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
Map<String, Integer> s2month = new HashMap<String, Integer>();
for (int i = 1; i <= 12; i++) {//代码风格更不错一点
s2month.put(months[i - 1], i);
}
String[] array = date.split(" ");
int year = Integer.parseInt(array[2]);
int month = s2month.get(array[1]);
int day = Integer.parseInt(array[0].substring(0, array[0].length() - 2));// Integer.parseInt
return String.format("%d-%02d-%02d", year, month, day);//String.format("%d-%02d-%02d", ...) 格式化更彻底/更简约,省掉了 StringBuilder
}
}
Y 相关知识
HashMap/Hashtable *
此数据结构的【查询性能极佳】、【适用于k-v查询】: O(1)
本算法中,用于查询 月份(key) 的阿拉伯数字(value)
Java的格式化API *
格式化输出类:
NumberFormat
DecimalFormat
Dateformat
String.format
日期类:
Java的String类API
String
substring
indexOf
charAt
length()
...
StringBuilder
StringBuffer
X 参考文献
[Java/LeetCode]算法练习:转变日期格式(1507/simple)的更多相关文章
- [Java/LeetCode]算法练习:二进制间距(868/simple)
1 题目描述 题目来源: https://leetcode-cn.com/problems/binary-gap/ 给定一个正整数 n,找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 ...
- Java处理Excel中的日期格式
Java处理Excel中的日期格式 2011-12-23 17:34:03| 分类: java |举报 |字号 订阅 下载LOFTER 我的照片书 | 在Excel中的日期格式,其数值为距离1 ...
- java工具类(五)之日期格式字符串与日期实现互转
JAVA字符串转日期或日期转字符串 项目开发过程中需要实现日期格式的字符串与日期进行互转,并进行日期的加减操作. Demo如下: package weiming.lmapp.utils; import ...
- java导入excel时处理日期格式(已验证ok)
在Excel中的日期格式,比如2009-12-24将其转化为数字格式时变成了40171,在用java处理的时候,读取的也将是40171.如果使用POI处理Excel中的日期类型的单元格时,如果仅仅是判 ...
- java 获取当前日期和特殊日期格式转换
1.获取当前日期: package com.infomorrow.dao; import java.sql.Timestamp; import java.util.Calendar; import ...
- JAVA对象转换为JSON及日期格式转换处理
1.JSON日期格式转换 默认JSON对DATE类型会转换成一个多属性对象, 而不是单独的一个字符串, 在某些应用处理上不是很方便, 可以利用JsonValueProcessor来实现日期的转换. ...
- Java与C#间json日期格式互转完美解决方案
http://blog.csdn.net/wilsonke/article/details/24362851 作用一种简单方便的数据传输方案,JSON已经成为替代XML的事实标准.然而在JSON中 ...
- LeetCode算法题-Subdomain Visit Count(Java实现)
这是悦乐书的第320次更新,第341篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第189题(顺位题号是811).像"discuss.leetcode.com& ...
- LeetCode算法题-Search in a Binary Search Tree(Java实现)
这是悦乐书的第295次更新,第314篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第163题(顺位题号是700).给定一个二叉搜索树(BST)的和正整数val. 你需要在 ...
随机推荐
- elementUI el-tree报错 Cannot read property ‘setCheckedKeys’ of undefined"
给树节点赋值时,执行下面代码会报错,原因是:DOM元素未加载完成. 以下为错误写法. handleRowClick(row) { this.$refs.tree.setCheckedKeys(ids) ...
- 解决mikumikudance丢失dxdx_43.dll问题
首先是MMD软件下载 我的操作系统是win10-x64 设备是19版小新pro13 mmd官网地址https://learnmmd.com/downloads/ 或者戳这里 链接:https://pa ...
- ASP.NET Core 读取配置文件信息
一:读取配置文件 先来看一下appsettings.json文件的内容,如下图: { "ConnectionStrings": { "ServerConnection&q ...
- C++ || 用类 写交换函数 ||函数指针传递
点击查看代码 #include <iostream> using namespace std; void swap(int* a,int* b) //函数参数为指针形式 { int p = ...
- shrding-jdbc分表引起的坑
1.sum等函数不能解析,报错 2.3.1版本,分页,计算出错,第二页以后数据出现问题 3.4.1版本,创建索引添加"`"关键字报错,因为会给索引名拼接上表名,组装后的sql错误.
- mysql中数据库的并发事务问题
1.脏读(dirty-read):如果第二个事务查询到第一个事务还未提交的更新数据,就会形成脏读. 2.幻读/虚读(phantom read):一个事务执行两次,如果出现第二次事务执行比第一次多一些或 ...
- 关于一维数组传入函数的使用 //西电oj214题字符统计
#include<stdio.h> void count(char str[],int num[]){//形参用[],传递数组首地址后可以直接正常用数组str[i] int i; for( ...
- VSCODE C# 运行 找不到任务"BUILD"----C#常用命令
使用 Visual Studio Code 创建 .NET 类库 - .NET | Microsoft Docs 安装vscode.vscode c#相关拓展.MINIGW64 1.创建文件夹 2.用 ...
- Unidbgrid自动调整列宽
UniDBGrid1 -> ClientEvents -> ExtEvents [Ext.data.Store[store] ] add store.load fn: function s ...
- 盘点10个最受欢迎IntelliJ IDEA主题,必有一款适合你!
选择一款适合自己的主题,这样每天工作才不会累!下面给大家精选了一批优秀的主题,并配上案例截图.如果有你喜欢的,那就赶紧去下载吧! Darcula 这是IntelliJ IDEA默认的暗色主题,适合长时 ...