@@ -54,21 +54,52 @@ char *HACKERRANK_WARMUP_lastN(const char *s, unsigned long n) {
54
54
return result ;
55
55
}
56
56
57
+ char * HACKERRANK_WARMUP_getFirst (const char * s , unsigned long n ) {
58
+ return HACKERRANK_WARMUP_getStringFragment (s , strlen (s ), 0 , n );
59
+ }
60
+
61
+ char * HACKERRANK_WARMUP_getStringFragment (const char * s , unsigned long len ,
62
+ unsigned long from ,
63
+ unsigned long to ) {
64
+ // unsigned long len = strlen(s);
65
+ if (to > len ) {
66
+ return NULL ;
67
+ }
68
+ if (to == 0 ) {
69
+ return NULL ;
70
+ }
71
+
72
+ char * result = (char * )malloc ((to + 1 ) * sizeof (char ));
73
+ if (result == NULL ) {
74
+ return NULL ;
75
+ }
76
+
77
+ strncpy (result , s + from , to );
78
+
79
+ result [to ] = '\0' ;
80
+
81
+ return result ;
82
+ }
83
+
57
84
char * HACKERRANK_WARMUP_timeConversion (const char * s ) {
58
85
char * meridian = HACKERRANK_WARMUP_lastN (s , 2 );
59
86
60
- char * hour_str = HACKERRANK_WARMUP_firstN (s , 2 );
87
+ // char *hour_str = HACKERRANK_WARMUP_firstN(s, 2);
88
+ char * hour_str = HACKERRANK_WARMUP_getFirst (s , 2 );
89
+
61
90
char * time_str = (char * )malloc ((strlen (s ) + 1 ) * sizeof (char ));
62
91
if (time_str == NULL ) {
63
92
free (hour_str );
64
93
free (meridian );
65
94
return NULL ;
66
95
}
67
96
strcpy (time_str , s );
68
- char * temp_time_str = HACKERRANK_WARMUP_lastN (time_str , strlen (time_str ) - 2 );
97
+ char * temp_time_str ;
98
+ unsigned long time_str_len = strlen (time_str );
99
+ temp_time_str = HACKERRANK_WARMUP_lastN (time_str , time_str_len - 2 );
69
100
free (time_str );
70
101
time_str = temp_time_str ;
71
- temp_time_str = HACKERRANK_WARMUP_firstN (time_str , strlen ( time_str ) - 2 );
102
+ temp_time_str = HACKERRANK_WARMUP_firstN (time_str , time_str_len - 2 );
72
103
free (time_str );
73
104
time_str = temp_time_str ;
74
105
0 commit comments