zoukankan      html  css  js  c++  java
  • LeetCode 5661. 替换隐藏数字得到的最晚时间 做题小结

    题目

    给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。
    
    有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。
    
    替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。
    
     
    
    示例 1:
    
    输入:time = "2?:?0"
    输出:"23:50"
    解释:以数字 '2' 开头的最晚一小时是 23 ,以 '0' 结尾的最晚一分钟是 50 。
    示例 2:
    
    输入:time = "0?:3?"
    输出:"09:39"
    示例 3:
    
    输入:time = "1?:22"
    输出:"19:22"
     
    
    提示:
    
    time 的格式为 hh:mm
    题目数据保证你可以由输入的字符串生成有效的时间
    

    解题思路与算法

    • 字符串“00:00” 的4个0分别看做x1,x2,x3,x4
    • 如果x3未知,x3最大为5;如果x4未知,x4最大为9
    • x1,x2有三种情况:
      • x1,x2未知: x1最大为2,x2最大为3
      • x1未知: 如果x2大于3,那x1最大为1。因为没有24,25,,,,这样的小时,最大为23,最大具体时间为23:59;如果x2小于等于3,那么x1最大为2
      • x2未知: 如果x1为2,x2最大只能为3;如果x1小于2,那么x2最大可以为9

    代码

    class Solution {
        	public String maximumTime(String time) {
    		char[] ch = time.toCharArray();
    		String x1=String.valueOf(ch[0]);
    		String x2=String.valueOf(ch[1]);
    		String x3=String.valueOf(ch[3]);
    		String x4=String.valueOf(ch[4]);
    		if(x1.equals("?") && x2.equals("?") ) {
    			ch[0]='2';
    			ch[1]='3';
    		}else if (x1.equals("?")) {
    			if((int)ch[1]-(int)('0')>3) {
    				ch[0]='1';
    				
    			}else {
    				ch[0]='2';
    			}
    		}else if (x2.equals("?")) {
    			if((int)ch[0]-(int)('0')==2) {
    				ch[1]='3';
    			}else {
    				ch[1]='9';
    			}
    		}
    		if(x3.equals("?")) {
    			ch[3]='5';
    		}
    		if(x4.equals("?")) {
    			ch[4]='9';
    		}
    
    		return String.valueOf(ch);
    
    	}
    
    }
    
  • 相关阅读:
    Centos7配置局域网yum源报错——Error downloading packages: failed to retrieve packages...
    Centos7扩展根分区——不增加磁盘
    Paxos算法
    记一次业务中的大坑-MYSQL有重复数据下的增加主键
    填坑之路——Hadoop分布式缓存
    Java接口技术
    Java-IO操作性能对比
    Clob对象转换为String
    剖析Reflection.getCallerClass
    Java类的加载、链接和初始化
  • 原文地址:https://www.cnblogs.com/nmydt/p/14494117.html
Copyright © 2011-2022 走看看