Skip to content

Commit 9bb0ab4

Browse files
Jivan052mertcandav
andauthored
[ Feature request] : addon of jule program for reverse the string (#45)
* Add files via upload * Update strings/StringReverse.jule Co-authored-by: Mertcan D. <[email protected]> * Update strings/StringReverseTest.jule Co-authored-by: Mertcan D. <[email protected]> * Update strings/StringReverseTest.jule Co-authored-by: Mertcan D. <[email protected]> * Update strings/StringReverseTest.jule Co-authored-by: Mertcan D. <[email protected]> * Update StringReverse.jule * Update and rename StringReverse.jule to reverse.jule * Update and rename StringReverseTest.jule to reverse_test.jule * Update strings/reverse.jule Co-authored-by: Mertcan D. <[email protected]> * Update strings/reverse.jule Co-authored-by: Mertcan D. <[email protected]> * Update strings/reverse.jule Co-authored-by: Mertcan D. <[email protected]> --------- Co-authored-by: Mertcan D. <[email protected]>
1 parent cd6ecc7 commit 9bb0ab4

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

strings/reverse.jule

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Reverse a given string and return reversed string
2+
// e.g. input: Hello, output: olleH
3+
// Author: Jivanjamadar
4+
5+
fn StringReverse(s: str): str {
6+
runes := []rune(s) // Convert string to rune array
7+
mut reversed := make([]rune, len(runes)) // Create an array of the same length as 'runes'
8+
9+
10+
mut i := 0
11+
for i < len(runes); i++ {
12+
reversed[i] = runes[len(runes) - i - 1]
13+
}
14+
15+
ret str(reversed) // Convert rune array back to string using casting
16+
}

strings/reverse_test.jule

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#build test
2+
3+
use "std/testing"
4+
struct StringReverseTest {
5+
name: str
6+
s: str
7+
expected: str
8+
}
9+
10+
static StringReverseTests: []StringReverseTest = [
11+
{
12+
"Simple case 1",
13+
"hello",
14+
"olleh",
15+
},
16+
{
17+
"Simple case 2",
18+
"world",
19+
"dlrow",
20+
},
21+
{
22+
"Palindrome case",
23+
"madam",
24+
"madam",
25+
},
26+
{
27+
"Empty string",
28+
"",
29+
"",
30+
},
31+
{
32+
"Single character",
33+
"a",
34+
"a",
35+
},
36+
{
37+
"Numbers in string",
38+
"12345",
39+
"54321",
40+
},
41+
{
42+
"Special characters",
43+
"!@#",
44+
"#@!",
45+
},
46+
{
47+
"Mixed case",
48+
"HeLLo",
49+
"oLLeH",
50+
},
51+
{
52+
"Spaces included",
53+
"hello world",
54+
"dlrow olleh",
55+
},
56+
{
57+
"String with spaces only",
58+
" ",
59+
" ",
60+
},
61+
62+
]
63+
64+
#test
65+
fn testStringRevese(t: &testing::T){
66+
for _, test in StringReverseTests {
67+
funcResult := StringReverse(test.s)
68+
if test.expected != funcResult{
69+
t.Errorf("Expected: {}, got{}", test.expected, funcResult)
70+
}
71+
}
72+
}

0 commit comments

Comments
 (0)