@@ -40,24 +40,23 @@ char *HACKERRANK_WARMUP_getStringFragment(const char *s, unsigned long len,
4040}
4141
4242char * HACKERRANK_WARMUP_timeConversion (const char * s ) {
43+ if (s == NULL ) {
44+ return NULL ;
45+ }
46+
47+ const unsigned int TIME_SIZE = 11 ; // hh:mm:ssXX 10 + 1 for null terminator
48+
4349 char * meridian = HACKERRANK_WARMUP_getLast (s , 2 );
4450 char * hour_str = HACKERRANK_WARMUP_getFirst (s , 2 );
4551
46- char * time_str = (char * )malloc ((strlen (s ) + 1 ) * sizeof (char ));
47- if (time_str == NULL ) {
48- free (hour_str );
49- free (meridian );
50- return NULL ;
51- }
52+ char time_str [TIME_SIZE ];
5253 strcpy (time_str , s );
53- char * temp_time_str ;
54+ const char * temp_time_str ;
5455 unsigned long time_str_len = strlen (time_str );
5556 temp_time_str = HACKERRANK_WARMUP_getLast (time_str , time_str_len - 2 );
56- free (time_str );
57- time_str = temp_time_str ;
57+ strcpy (time_str , temp_time_str );
5858 temp_time_str = HACKERRANK_WARMUP_getFirst (time_str , time_str_len - 2 );
59- free (time_str );
60- time_str = temp_time_str ;
59+ strcpy (time_str , temp_time_str );
6160
6261 char * endptr ;
6362 long hour = strtol (hour_str , & endptr , 10 );
@@ -67,7 +66,6 @@ char *HACKERRANK_WARMUP_timeConversion(const char *s) {
6766
6867 free (hour_str );
6968 free (meridian );
70- free (time_str );
7169 free (endptr );
7270 return NULL ;
7371 } else {
@@ -87,7 +85,6 @@ char *HACKERRANK_WARMUP_timeConversion(const char *s) {
8785 snprintf (conversion , BUFFER_MAX_SIZE , "%02ld%s" , hour , time_str );
8886 free (hour_str );
8987 free (meridian );
90- free (time_str );
9188
9289 return conversion ;
9390}
0 commit comments