88#include <stdlib.h>
99#include <string.h>
1010
11- char * HACKERRANK_WARMUP_firstN (const char * s , unsigned long n ) {
12- if (s == NULL ) {
13- return NULL ;
14- }
15-
16- unsigned long len = strlen (s );
17- if (n > len ) {
18- return NULL ;
19- }
20- if (n == 0 ) {
21- return NULL ;
22- }
23-
24- char * result = (char * )malloc ((n + 1 ) * sizeof (char ));
25- if (result == NULL ) {
26- return NULL ;
27- }
28-
29- strncpy (result , s , n );
30-
31- result [n ] = '\0' ;
32-
33- return result ;
34- }
35-
3611char * HACKERRANK_WARMUP_lastN (const char * s , unsigned long n ) {
3712 unsigned long len = strlen (s );
3813 if (n > len ) {
@@ -58,6 +33,11 @@ char *HACKERRANK_WARMUP_getFirst(const char *s, unsigned long n) {
5833 return HACKERRANK_WARMUP_getStringFragment (s , strlen (s ), 0 , n );
5934}
6035
36+ char * HACKERRANK_WARMUP_getLast (const char * s , unsigned long n ) {
37+ unsigned long len = strlen (s );
38+ return HACKERRANK_WARMUP_getStringFragment (s , len , len - n , n );
39+ }
40+
6141char * HACKERRANK_WARMUP_getStringFragment (const char * s , unsigned long len ,
6242 unsigned long from ,
6343 unsigned long to ) {
@@ -82,6 +62,7 @@ char *HACKERRANK_WARMUP_getStringFragment(const char *s, unsigned long len,
8262
8363char * HACKERRANK_WARMUP_timeConversion (const char * s ) {
8464 char * meridian = HACKERRANK_WARMUP_lastN (s , 2 );
65+ // char *meridian = HACKERRANK_WARMUP_getLast(s, 2);
8566
8667 // char *hour_str = HACKERRANK_WARMUP_firstN(s, 2);
8768 char * hour_str = HACKERRANK_WARMUP_getFirst (s , 2 );
@@ -98,7 +79,7 @@ char *HACKERRANK_WARMUP_timeConversion(const char *s) {
9879 temp_time_str = HACKERRANK_WARMUP_lastN (time_str , time_str_len - 2 );
9980 free (time_str );
10081 time_str = temp_time_str ;
101- temp_time_str = HACKERRANK_WARMUP_firstN (time_str , time_str_len - 2 );
82+ temp_time_str = HACKERRANK_WARMUP_getFirst (time_str , time_str_len - 2 );
10283 free (time_str );
10384 time_str = temp_time_str ;
10485
0 commit comments