Skip to content

Commit d6029be

Browse files
committed
update funcs min and max for string array
1 parent 788d150 commit d6029be

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

array.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@ func Max[T cmp.Ordered](array []T) (any, error) {
5555
return nil, errors.New("empty array")
5656
}
5757
m := array[0]
58+
if reflect.TypeOf(m).Kind() == reflect.String {
59+
for i := 1; i < size; i++ {
60+
if len(any(m).(string)) < len(any(array[i]).(string)) {
61+
m = array[i]
62+
} else if len(any(m).(string)) == len(any(array[i]).(string)) {
63+
m = max(m, array[i])
64+
}
65+
}
66+
return m, nil
67+
}
5868
for i := 1; i < size; i++ {
5969
m = max(m, array[i])
6070
}
@@ -68,6 +78,17 @@ func Min[T cmp.Ordered](array []T) (any, error) {
6878
return nil, errors.New("empty array")
6979
}
7080
m := array[0]
81+
if reflect.TypeOf(m).Kind() == reflect.String {
82+
for i := 1; i < size; i++ {
83+
if len(any(m).(string)) > len(any(array[i]).(string)) {
84+
m = array[i]
85+
} else if len(any(m).(string)) == len(any(array[i]).(string)) {
86+
m = min(m, array[i])
87+
}
88+
}
89+
return m, nil
90+
}
91+
7192
for i := 1; i < size; i++ {
7293
m = min(m, array[i])
7394
}

array_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ func TestIsEqual(t *testing.T) {
127127
func TestMax(t *testing.T) {
128128
arrInt := []int{1, 20, 300, 44, 56}
129129
arrFloat := []float64{100.1, 20.2, 3.346598, 458.9, 5.5}
130-
arrString := []string{"one", "two", "three", "four", "fizzzzve"}
130+
arrString := []string{"one", "two", "three", "fours", "five"}
131131
var arrEmpty []int
132132

133133
// Test int
@@ -148,7 +148,7 @@ func TestMax(t *testing.T) {
148148

149149
// Test string
150150
stringMax, _ := Max(arrString)
151-
if stringMax == "two" {
151+
if stringMax == "three" {
152152
fmt.Println("Yes (3/4) | Array Max is set successfully for string")
153153
} else {
154154
t.Error("No (3/4) | Array Max isn't set successfully for string")
@@ -167,7 +167,7 @@ func TestMax(t *testing.T) {
167167
func TestMin(t *testing.T) {
168168
arrInt := []int{1, 20, 300, 44, 56}
169169
arrFloat := []float64{100.1, 20.2, 3.346598, 458.9, 5.5}
170-
arrString := []string{"one", "two", "three", "four", "five"}
170+
arrString := []string{"zero", "one", "two", "three", "four", "five"}
171171
var arrEmpty []int
172172

173173
// Test int
@@ -188,7 +188,7 @@ func TestMin(t *testing.T) {
188188

189189
// Test string
190190
stringMin, _ := Min(arrString)
191-
if stringMin == "five" {
191+
if stringMin == "one" {
192192
fmt.Println("Yes (3/4) | Array Min is set successfully for string")
193193
} else {
194194
t.Error("No (3/4) | Array Min isn't set successfully for string")

0 commit comments

Comments
 (0)