美文网首页
算法练习100天-第4天

算法练习100天-第4天

作者: 有意思的小太太 | 来源:发表于2020-09-03 18:22 被阅读0次

类别:数组

题目: 1507. 转变日期格式

我的思路:

class Solution {
    public static String reformatDate(String date) {
        //将日期按" "拆分成年、月、日
        String[] dateArray = date.split(" ");
        //年
        String year = dateArray[2];
        //月
        Map<String, String> monthMap = new HashMap(16);
        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 month = monthMap.get(dateArray[1]);
        //日
        String day = dateArray[0].substring(0, dateArray[0].length()-2);
        return year +"-"+ month + "-" + (day.length() == 1 ? "0" + day : day);
    }
}

leetcode上其他童鞋思路

1.解题思路
先分割成三段,日月年,然后分别处理即可
class Solution {
    public String reformatDate(String date) {
        Map<String,String> map = new HashMap<>();
        map.put("Jan","01");map.put("Feb","02");map.put("Mar","03");
        map.put("Apr","04");map.put("May","05");map.put("Jun","06");
        map.put("Jul","07");map.put("Aug","08");map.put("Sep","09");
        map.put("Oct","10");map.put("Nov","11");map.put("Dec","12");
        String[] strings = date.split(" ");
        StringBuilder ans = new StringBuilder();
        ans.append(strings[2]).append('-').append(map.get(strings[1])).append('-');
        return strings[0].length() > 3 ?
                ans.append(strings[0].substring(0,2)).toString():
                ans.append("0"+strings[0].substring(0,1)).toString();
    }
}

2.解题思路
首先,我们可以按照空格把字符串分割成三部分,分别取出日、月、年。对于他们分别做这样的事情:
日:去掉结尾的两位英文字母,如果数字只有一位再补上前导零
月:使用字典映射的方式把月份的英文缩写转换成对应的数字
年:不用变化
最终组织成「年-月-日」的形式即可。
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));
        return String.format("%d-%02d-%02d", year, month, day);
    }
}
复杂度分析

时间复杂度:O(1)O(1)。
空间复杂度:O(1)O(1)。

相同点:

1.字符串分割成三部分,分别取出日、月、年
2.用Map(k,v)映射月份

差异点:

1.解题思路1最后是用StringBuilder拼接字符串,比较节省内存
2.解题思路2使用String.format()格式化并连接字符串,日、月补0的方式更简洁

相关文章

  • 前端干货 -03

    37. 算法 算法地址 数据结构与算法 JavaScript 描述. 章节练习https://github.com...

  • 算法-心得

    本周大部分的时间都在练习算法。虽说是有点被逼迫的意思,但是算法还是很重要的,也需要自己练习。 说到算法,我自身的感...

  • 算法练习(-)

    You are a professional robber planning to rob houses alon...

  • 算法练习

    将字符串转化为数字,实现int()方法 回文数 俩数之和 给定一个整数数组 nums 和一个目标值 target,...

  • 算法练习

    背景 Find closing/opening parenthesis You will be implement...

  • 算法练习

    2021 三月份 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 ...

  • 刷算法 - 算法练习

    最近断断续续的刷了一些基础算法题. 我们做移动端开发的, 刷算法题有意义吗? 如果对这个问题有疑问, 可以在读这篇...

  • 2018-11-11 算法练习题

    下面是几道算法练习题:

  • iOS + 常用排序算法

    算练习吧参照的原文常用排序算法总结(一)八大排序算法

  • 笨办法学C 练习39:字符串算法

    练习39:字符串算法 原文:Exercise 39: String Algorithms 译者:飞龙 这个练习中,...

网友评论

      本文标题:算法练习100天-第4天

      本文链接:https://www.haomeiwen.com/subject/syyosktx.html