📜  找到回文的时间并在给定时间之后

📅  最后修改于: 2021-06-26 09:03:35             🧑  作者: Mango

给定一个字符串str ,该字符串以24小时格式将时间存储为HH:MM使得0≤HH≤230≤MM≤59 。任务是找到下一个最接近的时间,即当以字符串读取时是回文。如果不存在这样的字符串,则打印-1

例子:

方法:有三种可能的情况:

  1. 如果MM 则输出将以小时为单位,以HH为分钟。
  2. 如果HH = 23MM≥32,则输出将为-1
  3. 否则输出将为HH + 1小时和反向(HH + 1)分钟。

下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
typedef long long ll;
  
// Function to return the required time
string getTime(string s, int n)
{
    // To store the resultant time
    string res;
  
    // Hours are stored in h as integer
    int h = stoi(s.substr(0, 2));
  
    // Minutes are stored in m as integer
    int m = stoi(s.substr(3, 2));
  
    // Reverse of h
    int rev_h = (h % 10) * 10 + ((h % 100) - (h % 10)) / 10;
  
    // Reverse of h as a string
    string rev_hs = to_string(rev_h);
  
    if (h == 23 && m >= 32) {
        res = "-1";
    }
  
    // If MM < reverse of (HH)
    else if (m < rev_h) {
        string temp;
  
        // 0 is added if HH < 10
        if (h < 10)
            temp = "0";
        temp = temp + to_string(h);
  
        // 0 is added if rev_h < 10
        if (rev_h < 10)
            res = res + temp + ":0" + rev_hs;
        else
            res = res + temp + ":" + rev_hs;
    }
    else {
  
        // Increment hours
        h++;
  
        // Reverse of the hour after incrementing 1
        rev_h = (h % 10) * 10 + ((h % 100) - (h % 10)) / 10;
        rev_hs = to_string(rev_h);
  
        string temp;
  
        // 0 is added if HH < 10
        if (h < 10)
            temp = "0";
        temp = temp + to_string(h);
  
        // 0 is added if rev_h < 10
        if (rev_h < 10)
            res = res + temp + ":0" + rev_hs;
        else
            res = res + temp + ":" + rev_hs;
    }
    return res;
}
  
// Driver code
int main()
{
    string s = "21:12";
    int n = s.length();
  
    cout << getTime(s, n);
  
    return 0;
}


Java
// Java implementation of the approach
import java.util.*;
  
class GFG 
{
  
    // Function to return the required time
    static String getTime(String s, int n) 
    {
  
        // To store the resultant time
        String res = "";
  
        // Hours are stored in h as integer
        int h = Integer.parseInt(s.substring(0, 0 + 2));
  
        // Minutes are stored in m as integer
        int m = Integer.parseInt(s.substring(3, 3 + 2));
  
        // Reverse of h
        int rev_h = (h % 10) * 10 + 
                   ((h % 100) - (h % 10)) / 10;
  
        // Reverse of h as a string
        String rev_hs = Integer.toString(rev_h);
        if (h == 23 && m >= 32)
        {
            res = "-1";
        }
          
        // If MM < reverse of (HH)
        else if (m < rev_h)
        {
            String temp = "";
  
            // 0 is added if HH < 10
            if (h < 10)
                temp = "0";
            temp = temp + Integer.toString(h);
  
            // 0 is added if rev_h < 10
            if (rev_h < 10)
                res = res + temp + ":0" + rev_hs;
            else
                res = res + temp + ":" + rev_hs;
        } 
        else
        {
  
            // Increment hours
            h++;
  
            // Reverse of the hour after incrementing 1
            rev_h = (h % 10) * 10 + ((h % 100) - 
                    (h % 10)) / 10;
            rev_hs = Integer.toString(rev_h);
  
            String temp = "";
  
            // 0 is added if HH < 10
            if (h < 10)
                temp = "0";
            temp = temp + Integer.toString(h);
  
            // 0 is added if rev_h < 10
            if (rev_h < 10)
                res = res + temp + ":0" + rev_hs;
            else
                res = res + temp + ":" + rev_hs;
        }
        return res;
    }
  
    // Driver Code
    public static void main(String[] args)
    {
        String s = "21:12";
        int n = s.length();
        System.out.println(getTime(s, n));
    }
}
  
// This code is contributed by
// sanjeev2552


Python3
# Python3 implementation of the approach 
  
# Function to return the required time 
def getTime(s, n) : 
  
    # Hours are stored in h as integer 
    h = int(s[0 : 2]); 
  
    # Minutes are stored in m as integer 
    m = int(s[3 : 5]); 
  
    # Reverse of h 
    rev_h = (h % 10) * 10 + ((h % 100) - (h % 10)) // 10; 
  
    # Reverse of h as a string 
    rev_hs = str(rev_h)
      
    temp = ""
    res  = ""
      
    if (h == 23 and m >= 32) :
        res = "-1"; 
      
  
    # If MM < reverse of (HH) 
    elif (m < rev_h) : 
  
        # 0 is added if HH < 10 
        if (h < 10) :
            temp = "0"; 
              
        temp = temp + str(h); 
  
        # 0 is added if rev_h < 10 
        if (rev_h < 10) :
            res = res + temp + ":0" + rev_hs; 
        else :
            res = res + temp + ":" + rev_hs; 
      
    else :
          
        # Increment hours 
        h += 1
  
        # Reverse of the hour after incrementing 1 
        rev_h = (h % 10) * 10 + ((h % 100) - (h % 10)) //10; 
          
        rev_hs = str(rev_h); 
  
        # 0 is added if HH < 10 
        if (h < 10) :
            temp = "0"; 
              
        temp = temp + str(h); 
  
        # 0 is added if rev_h < 10 
        if (rev_h < 10) :
            res = res + temp + ":0" + rev_hs; 
        else :
            res = res + temp + ":" + rev_hs; 
      
    return res; 
  
  
# Driver code 
if __name__ == "__main__" : 
  
    s = "21:12"; 
    n = len(s); 
  
    print(getTime(s, n)); 
  
    # This code is contributed by AnkitRai01


PHP
= 32) {
        $res = "-1";
    }
   
    // If MM < reverse of (HH)
    else if ($m < $rev_h) {
        $temp="";
   
        // 0 is added if HH < 10
        if ($h < 10)
            $temp = "0";
        $temp = $temp . strval($h);
   
        // 0 is added if rev_h < 10
        if ($rev_h < 10)
            $res = $res . $temp . ":0" . $rev_hs;
        else
            $res = $res. $temp .":" . $rev_hs;
    }
    else {
   
        // Increment hours
        $h++;
   
        // Reverse of the hour after incrementing 1
        $rev_h = ($h % 10) * 10 + (($h % 100) - ($h % 10)) / 10;
        $rev_hs = strval($rev_h);
   
        $temp="";
   
        // 0 is added if HH < 10
        if ($h < 10)
            $temp = "0";
        $temp = $temp . strval($h);
   
        // 0 is added if rev_h < 10
        if ($rev_h < 10)
            $res = $res . $temp . ":0" . $rev_hs;
        else
            $res = $res . $temp . ":" . $rev_hs;
    }
    return $res;
}
   
// Driver code
  
    $s = "21:12";
    $n = strlen($s);
   
    echo getTime($s, $n);
   
    return 0;
  
// This code is contributed by ChitraNayal
?>


输出:
22:22

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。