给定字符串str ,它以 24 小时格式存储时间为“HH: MM” 。任务是找到需要添加以使时间回文的最小分钟数。
例子:
Input: str = “05:39”
Output: 11
Explanation: It takes 11 minutes for minute value to become 50, 05:50 is a palindromic time
Examples:
Input: str = “13:31”
Output: 0
Explanation: Since, 13:31 is already palindromic therefore, 0 minutes is required
方法:
这个想法是贪婪地增加分钟值,直到时间值变成回文。运行 while 循环以增加分钟值并同时检查小时值和分钟值是否形成回文。
在增加分钟和小时值时,请确保在分钟值为60且小时值为24时检查基本条件。
下面是上述方法的实现:
C++
// C++ program for the above approach
#include
using namespace std;
// Function to get the required minutes
int get_palindrome_time(string str)
{
int hh, mm;
// Storing hour and minute value
// in integral form
hh
= (str[0] - 48) * 10
+ (str[1] - 48);
mm
= (str[3] - 48) * 10
+ (str[4] - 48);
int requiredTime = 0;
// Keep iterating till first digit
// hour becomes equal to second
// digit of minute and second digit
// of hour becomes equal to first
// digit of minute
while (hh % 10 != mm / 10
|| hh / 10 != mm % 10) {
++mm;
// If mins is 60, increase hour, and
// reinitilialized to 0
if (mm == 60) {
mm = 0;
++hh;
}
// If hours is 60, reinitialized to 0
if (hh == 24)
hh = 0;
++requiredTime;
}
// Return the required time
return requiredTime;
}
// Driver Code
int main()
{
// Given Time as a string
string str = "05:39";
// Function Call
cout << get_palindrome_time(str)
<< endl;
}
Java
// Java program for the above approach
class GFG{
// Function to get the required minutes
public static int get_palindrome_time(String str)
{
int hh, mm;
// Storing hour and minute value
// in integral form
hh = (str.charAt(0) - 48) * 10 +
(str.charAt(1) - 48);
mm = (str.charAt(3) - 48) * 10 +
(str.charAt(4) - 48);
int requiredTime = 0;
// Keep iterating till first digit
// hour becomes equal to second
// digit of minute and second digit
// of hour becomes equal to first
// digit of minute
while (hh % 10 != mm / 10 ||
hh / 10 != mm % 10)
{
++mm;
// If mins is 60, increase hour, and
// reinitilialized to 0
if (mm == 60)
{
mm = 0;
++hh;
}
// If hours is 60, reinitialized to 0
if (hh == 24)
hh = 0;
++requiredTime;
}
// Return the required time
return requiredTime;
}
// Driver code
public static void main(String[] args)
{
// Given Time as a string
String str = "05:39";
// Function Call
System.out.println(get_palindrome_time(str));
}
}
// This code is contributed by divyeshrabadiya07
Python3
# Python3 program for the above approach
# Function to get the required minutes
def get_palindrome_time(str):
# Storing hour and minute value
# in integral form
hh = ((ord(str[0]) - 48) * 10 +
(ord(str[1]) - 48))
mm = ((ord(str[3]) - 48) * 10 +
(ord(str[4]) - 48))
requiredTime = 0
# Keep iterating till first digit
# hour becomes equal to second
# digit of minute and second digit
# of hour becomes equal to first
# digit of minute
while (hh % 10 != mm // 10 or
hh // 10 != mm % 10):
mm += 1
# If mins is 60, increase hour, and
# reinitilialized to 0
if (mm == 60):
mm = 0
hh += 1
# If hours is 60, reinitialized to 0
if (hh == 24):
hh = 0
requiredTime += 1;
# Return the required time
return requiredTime
if __name__=="__main__":
# Given Time as a string
str = "05:39";
# Function call
print(get_palindrome_time(str));
# This code is contributed by rutvik_56
C#
// C# program for the above approach
using System;
class GFG{
// Function to get the required minutes
public static int get_palindrome_time(string str)
{
int hh, mm;
// Storing hour and minute value
// in integral form
hh = (str[0] - 48) * 10 +
(str[1] - 48);
mm = (str[3] - 48) * 10 +
(str[4] - 48);
int requiredTime = 0;
// Keep iterating till first digit
// hour becomes equal to second
// digit of minute and second digit
// of hour becomes equal to first
// digit of minute
while (hh % 10 != mm / 10 ||
hh / 10 != mm % 10)
{
++mm;
// If mins is 60, increase hour,
// and reinitilialized to 0
if (mm == 60)
{
mm = 0;
++hh;
}
// If hours is 60, reinitialized to 0
if (hh == 24)
hh = 0;
++requiredTime;
}
// Return the required time
return requiredTime;
}
// Driver code
public static void Main(string[] args)
{
// Given Time as a string
string str = "05:39";
// Function Call
Console.Write(get_palindrome_time(str));
}
}
// This code is contributed by rutvik_56
Javascript
输出:
11
时间复杂度: O(1)
辅助空间: O(1)
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。