LeetCode 681. 最近时刻
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 681. 最近时刻
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給定一個形如 “HH:MM” 表示的時刻,利用當前出現過的數字構造下一個距離當前時間最近的時刻。每個出現數字都可以被無限次使用。
你可以認為給定的字符串一定是合法的。
例如,“01:34” 和 “12:09” 是合法的,“1:34” 和 “12:9” 是不合法的。
來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/next-closest-time
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
class Solution { public:string nextClosestTime(string time) {set<int> s;s.insert(time[0]-'0');s.insert(time[1]-'0');s.insert(time[3]-'0');s.insert(time[4]-'0');if(s.size()==1) return time;//數字都一樣vector<int> num(s.begin(),s.end());int i, j, h, m, size = num.size();int hour = (time[0]-'0')*10+time[1]-'0';int minute = (time[3]-'0')*10+time[4]-'0';int minlargeH = 24, minlargeM = 60;//大于其的最小時間int minH = 24, minM = 60;//可能的最小時間for(i = 0; i < size; i++){for(j = 0; j < size; j++){h = m = num[i]*10+num[j];minH = minM = min(minH, h);if(h > hour && h < minlargeH)minlargeH = h;if(m > minute && m < minlargeM)minlargeM = m;}}//暴力查找所有可能if(minlargeM != 60)//有更大的分鐘,時鐘不變return time.substr(0,3)+ (minlargeM>=10 ? to_string(minlargeM) : "0"+to_string(minlargeM));if(minlargeH != 24)//有更大的時鐘,+最小分鐘return (minlargeH>=10? to_string(minlargeH) : "0"+to_string(minlargeH)) + ":" + (minM>=10? to_string(minM) : "0"+to_string(minM));return (minH>=10? to_string(minH) : "0"+to_string(minH)) + ":" + (minM>=10? to_string(minM): "0"+to_string(minM));//都沒有,取最小時鐘+分鐘} };4 ms 6.2 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 681. 最近时刻的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 207. 课程表(拓扑
- 下一篇: LeetCode 1165. 单行键盘(