Heim  >  Artikel  >  Backend-Entwicklung  >  Maximieren Sie die fehlenden Werte innerhalb eines bestimmten Zeitraums im Format HH:MM

Maximieren Sie die fehlenden Werte innerhalb eines bestimmten Zeitraums im Format HH:MM

王林
王林nach vorne
2023-09-07 17:41:07634Durchsuche

Maximieren Sie die fehlenden Werte innerhalb eines bestimmten Zeitraums im Format HH:MM

Stellt die angegebene Zeichenfolge der Länge fünf als Zeitangabe im HH:MM-Format dar. Die Zeichenfolge kann einige „?“ enthalten und wir müssen sie durch eine beliebige Zahl ersetzen, damit das Ergebnis eine gültige Zeit und wahrscheinlich die größtmögliche Zeit ist. Darüber hinaus sind die angegebenen String-Nummern gültig und das „:“ erscheint an der genauen Position des Strings. Wir werden zuerst Brute-Force-Methoden und dann effiziente Methoden verwenden.

Beispiel Beispiel

Geben Sie 1 ein

Given string: 12:5?
Output: 12:59
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

Wir haben nur einen Platz zu besetzen und die maximale Zeit, die wir bekommen können, ist 12:59.

Geben Sie 2 ein

Given string: ?0:?9
Output: 20:59
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

Wir haben hier zwei freie Plätze, zunächst konzentrieren wir uns auf den Stundenteil, wir haben drei Optionen 0, 1 und 2, um sie zu füllen. Für den Minutenteil haben wir die Wahl zwischen 0 und 5, zur Maximierung können wir 5 eingeben.

Methode

Wir haben uns Beispiele angesehen. Schauen wir uns nun die verschiedenen Arten von Situationen an, mit denen wir konfrontiert sein könnten −

  • Wir haben zwei Teile der Zeichenfolge, den Stundenteil und den Minutenteil.

  • Der Stundenteil reicht von 0 bis 23 und der Minutenteil reicht von 0 bis 59.

  • Im Stundenteil gibt es noch mehr Situationen−

    • ‘x?’ wobei x 0, 1 und 2 sein kann. Für 0 können wir 0 als beste Wahl wählen, für 1 können wir 9 als beste Wahl wählen und für 2 können wir 3 als beste Wahl wählen.

    • '?x', wobei x zwischen 0 und 9 liegen kann. Wenn x im Bereich von 0 bis 3 liegt, können wir es durch 2 ersetzen, andernfalls ist 1 das Beste.

    • ‘??’ Da wir maximieren müssen, ersetzen wir es durch 23.

  • Besprechungsprotokoll, einige haben weitere Fälle −

    • ‘x?’ wobei x im Bereich von 0 bis 5 liegen kann. 9 wäre unsere beste Wahl, um „?“ zu ersetzen.

    • ‘?x‘ wobei x im Bereich von 0 bis 9 liegen kann. 5 wäre unsere beste Wahl, um „?“ zu ersetzen.

    • "??" weil wir es maximieren müssen und es dann durch 59 ersetzen.

Werfen wir einen Blick auf den Code, der die oben genannten Schritte implementiert –

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

#include <iostream>
using namespace std;
// function to replace hours
string replaceHours(string s){
   if(s[0] == '?' && s[1] == '?'){
      //Both hour characters are '?'
      // replace with the maximum hour we can achieve 
      s[0] = '2';
      s[1] = '3';
   }
   else if(s[0] == '?'){
      // if the second number of hours is in the range 0 to 3
      // replace by 2
      if(s[1] < 4){
         s[0] = '2';
      }
      else{
         s[0] = '1'; // otherwise replace by one 
      }
   }
   else if(s[1] == '?'){
      // if the first character is '2' we can go only upto 3
      if(s[0] == '2'){
         s[1] = '3';
      }
      else{
         s[1] = '9'; // else we can go for 9 
      }
   }
   return s;
}
// function to replace minutes
string replaceMinutes(string s){
   if(s[3] == '?' && s[4] == '?'){
      // both minutes characters are '?'
      // replace with maximum minutes we can acheive 
      s[3] = '5';
      s[4] = '9';
   }
   else if(s[3] == '?'){
      // we can maximum get 5 here 
      s[3] = '5';
   }
   else if(s[4] == '?'){
      // we can get maximum 9 here
      s[4] = '9';
   }
   return s;
}
int main(){
   string str = "2?:3?"; // given string 
   // calling the function for updation of the minutes 
   str = replaceMinutes(str);
   // calling to the function for updation of the hours
   str = replaceHours(str);
   // printing the final answer
   cout<<"The maximum time we can get by replacing ? is: "<< str<<endl;
   return 0;
}

Ausgabe

The maximum time we can get by replacing ? is: 23:39

Zeitliche und räumliche Komplexität

Die zeitliche Komplexität des obigen Codes ist O(1) oder konstant, da wir keine Schleifen oder rekursiven Aufrufe verwenden, sondern nur die If-Else-Bedingungen prüfen

Die Speicherplatzkomplexität des obigen Codes beträgt O(1), da wir keinen zusätzlichen Speicherplatz verwenden. Außerdem beträgt die Größe der von uns übergebenen Zeichenfolge für diese Funktion immer einen festen Wert von 5.

Hinweis: Um den Code schöner oder lesbarer zu machen, können Sie switch-Anweisungen verwenden. Sie haben keinen Einfluss auf die zeitliche oder räumliche Komplexität und machen das Lesen effizienter.

Auch das Zurückverfolgen und erneute Überprüfen ist eine Lösung, aber dies prüft jeden Fall und ist hier nicht effizient umzusetzen.

Fazit

In diesem Tutorial erhalten wir eine Zeichenfolge, die die Zeit im 24-Stunden-Format darstellt. Es gibt einige „?“ in der Zeichenfolge, die ersetzt werden müssen, um die maximal gültige Zeit zu erhalten, und die Zeichen in der Zeichenfolge verweisen garantiert immer auf die gültige Zeit. Wir haben eine if-else-Bedingung und zwei Funktionen verwendet, um das „?“ durch den entsprechenden Fall zu ersetzen. Da wir keine Schleifen oder rekursiven Funktionen verwenden, ist die zeitliche und räumliche Komplexität des obigen Codes konstant.

Das obige ist der detaillierte Inhalt vonMaximieren Sie die fehlenden Werte innerhalb eines bestimmten Zeitraums im Format HH:MM. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen