Mewakili rentetan panjang lima yang diberikan sebagai masa dalam format HH:MM. Rentetan itu mungkin mengandungi beberapa "?" dan kita perlu menggantikannya dengan sebarang nombor supaya hasilnya adalah masa yang sah dan mungkin masa yang paling besar. Tambahan pula, nombor rentetan yang diberikan adalah sah dan ":" akan muncul pada kedudukan rentetan yang tepat. Kami akan menggunakan kaedah kekerasan terlebih dahulu dan kemudian menggunakan kaedah yang cekap.
Given string: 12:5? Output: 12:59
Kami hanya mempunyai satu tempat untuk diisi dan masa maksimum yang kami dapat ialah 12:59.
Given string: ?0:?9 Output: 20:59
Kami mempunyai dua slot kosong di sini, pertama kami akan fokus pada bahagian jam, kami mempunyai tiga pilihan 0, 1 dan 2 untuk mengisinya. Untuk bahagian minit kita mempunyai pilihan dari 0 hingga 5, untuk memaksimumkan kita boleh mengisi 5.
Kami telah melihat contoh, sekarang mari lihat pelbagai jenis situasi yang mungkin kami hadapi −
Kami mempunyai dua bahagian rentetan, bahagian jam dan bahagian minit.
Bahagian jam adalah antara 0 hingga 23, dan bahagian minit antara 0 hingga 59.
Ada lebih banyak situasi dalam bahagian jam−
‘x?’ di mana x boleh menjadi 0, 1 dan 2. Untuk 0, kita boleh memilih 0 sebagai pilihan terbaik, untuk 1, kita boleh memilih 9 sebagai pilihan terbaik, dan untuk 2, kita boleh memilih 3 sebagai pilihan terbaik.
'?x', di mana x boleh berkisar antara 0 hingga 9. Jika x berada dalam julat 0 hingga 3, kita boleh menggantikannya dengan 2, jika tidak 1 akan menjadi yang terbaik.
‘??’ Memandangkan kita perlu memaksimumkan, kita menggantikannya dengan 23.
Minit mesyuarat, beberapa dengan kes lanjut −
‘x?’ di mana x boleh berada dalam julat 0 hingga 5. 9 akan menjadi pilihan terbaik kami untuk menggantikan '?'.
‘?x’ di mana x boleh berada dalam julat 0 hingga 9. 5 akan menjadi pilihan terbaik kami untuk menggantikan '?'.
"??" kerana kita perlu memaksimumkan dan kemudian kita menggantikannya dengan 59.
Mari kita lihat kod yang melaksanakan langkah di atas -
Terjemahan bahasa Cina bagi#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; }
The maximum time we can get by replacing ? is: 23:39
Kerumitan masa kod di atas ialah O(1) atau malar kerana kami tidak menggunakan sebarang gelung atau panggilan rekursif, hanya menyemak keadaan if-else
Kerumitan ruang kod di atas ialah O(1) kerana kami tidak menggunakan sebarang ruang tambahan. Juga, untuk fungsi ini, saiz rentetan yang kami lalui sentiasa 5 tetap.
Nota: Untuk menjadikan kod lebih cantik atau boleh dibaca, anda boleh menggunakan pernyataan suis, ia tidak akan menjejaskan kerumitan masa atau ruang dan akan menjadikan pembacaan lebih cekap.
Selain itu, menjejak ke belakang dan menyemak semula adalah penyelesaian, tetapi ini akan menyemak setiap kes dan tidak cekap untuk dilaksanakan di sini.
Dalam tutorial ini, kami diberikan rentetan yang mewakili masa dalam format 24 jam. Terdapat beberapa "?" dalam rentetan yang perlu diganti untuk mendapatkan masa sah maksimum, dan aksara dalam rentetan dijamin sentiasa menunjukkan masa yang sah. Kami menggunakan syarat if-else dan dua fungsi untuk menggantikan "?" dengan kes yang sesuai. Memandangkan kami tidak menggunakan sebarang gelung atau fungsi rekursif, kerumitan masa dan ruang kod di atas adalah malar.
Atas ialah kandungan terperinci Maksimumkan nilai yang hilang dalam tempoh masa tertentu, dalam format HH:MM. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!