Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में अगला निकटतम समय


मान लीजिए हमारे पास "HH:MM" प्रारूप में दर्शाया गया एक समय है, हमें वर्तमान अंकों का पुन: उपयोग करके अगला निकटतम समय उत्पन्न करना है। हम अंक का असीमित संख्या में उपयोग कर सकते हैं।

उदाहरण के लिए, यदि इनपुट "19:34" है, तो आउटपुट "19:39" होगा क्योंकि अंकों 1, 9, 3, 4 से अगला निकटतम समय 19:39 है। यह 19:33 नहीं है, क्योंकि यह 23 घंटे 59 मिनट बाद होता है।

हल करने की विधि

हम सभी संभावित संयोजनों को आजमाएंगे:

  • eval() फ़ंक्शन समय स्ट्रिंग को मिनटों में बदलता है।
  • मुख्य विधि में:
    • वर्तमान समय के चार अंक निकालें।
    • चार नेस्टेड लूप चलाएं प्रत्येक अंक के लिए (कुल 4^4 = 256 संयोजन)।
    • प्रत्येक संयोजन के लिए, घंटे (0-23) और मिनट (0-59) की वैधता जांचें।
    • वर्तमान समय को छोड़ दें।
    • मिनटों में अंतर की गणना करें, नकारात्मक होने पर 24*60 जोड़ें।
    • न्यूनतम सकारात्मक अंतर वाला समय चुनें।
  • यदि कोई नहीं मिला, तो मूल समय लौटाएं।

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; class Solution { public:    int eval(string x){       string a = to_string(x[0]);       a += x[1];       string b = to_string(x[2]);       b += x[3];       return stoi(a) * 60 + stoi(b);    }    string nextClosestTime(string t) {       string ret = "";       string temp = "";       int diff = INT_MAX;       vector<char> time;       time.push_back(t[0]);       time.push_back(t[1]);       time.push_back(t[3]);       time.push_back(t[4]);       int n = time.size();       string src = "";       string temp1 = "";       string temp2 = "";       for (int i = 0; i < n; i++)          src += time[i];       for (int i = 0; i < n; i++) {          for (int j = 0; j < n; j++) {             for (int k = 0; k < n; k++) {                for (int l = 0; l < n; l++) {                   temp1 = time[i];                   temp1 += time[j];                   temp2 = time[k];                   temp2 += time[l];                   if (stoi(temp1) > 23 || stoi(temp2) > 59)                      continue;                   temp = temp1 + temp2;                   if (temp == src)                      continue;                   int newDiff = eval(temp) - eval(src);                   if (newDiff < 0)                      newDiff += (60 * 24);                   if (newDiff < diff) {                      diff = newDiff;                      ret = temp1 + ":" + temp2;                   }                }             }          }       }       return ret.size() == 0 ? t : ret;    } }; main(){    Solution ob;    cout<<(ob.nextClosestTime("19:34")); }

इनपुट

"19:34"

आउटपुट

19:39

  1. - C++ में String at() फंक्शन

    सारांश यह संक्षिप्त ट्यूटोरियल स्ट्रिंग से कैरेक्टर्स के अनुक्रम को एक्सेस करने के लिए C++ स्ट्रिंग क्लास at() फंक्शनैलिटी का अवलोकन है। आगामी सेक्शन में, एक इच्छुक पाठक स्ट्रिंग क्लास प्रोग्रामिंग उदाहरणों के माध्यम से at() फंक्शन्स के मैनिपुलेशन की पूरी समझ प्राप्त कर सकता है। स्ट्रिंग क्लास प्रोग

  1. - C++ में स्ट्रिंग को टोकनाइज़ करना

    इस खंड में, हम देखेंगे कि C++ में स्ट्रिंग्स को कैसे टोकनाइज़ किया जाए। C में हम कैरेक्टर सरणी के लिए strtok() फंक्शन का उपयोग कर सकते हैं। यहां हमारे पास एक स्ट्रिंग क्लास है। अब हम देखेंगे कि उस स्ट्रिंग से किसी डिलीमीटर का उपयोग करके स्ट्रिंग को कैसे काटा जाए। C++ सुविधा का उपयोग करने के लिए, हम

  1. - C++ में स्ट्रिंग को टोकनाइज़ कैसे करें?

    पहला तरीका शब्दों को स्पेस से अलग करके पढ़ने के लिए stringstream का उपयोग करना है। यह थोड़ा सीमित है लेकिन अगर आप उचित चेक प्रदान करते हैं तो यह कार्य काफी अच्छी तरह से करता है। उदाहरण #include <vector> #include <string> #include <sstream> using namespace std; int main() {