Skip to content

Commit 5728ddc

Browse files
committed
First upload
1 parent a270b28 commit 5728ddc

12 files changed

+467
-0
lines changed

.abapgit.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
3+
<asx:values>
4+
<DATA>
5+
<MASTER_LANGUAGE>E</MASTER_LANGUAGE>
6+
<STARTING_FOLDER>/src/</STARTING_FOLDER>
7+
<FOLDER_LOGIC>PREFIX</FOLDER_LOGIC>
8+
</DATA>
9+
</asx:values>
10+
</asx:abap>

src/package.devc.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DEVC" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<DEVC>
6+
<CTEXT>Leet code samples for ABAP</CTEXT>
7+
</DEVC>
8+
</asx:values>
9+
</asx:abap>
10+
</abapGit>

src/z_lc_anagram.prog.abap

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
*&---------------------------------------------------------------------*
2+
*& Report Z_LC_ANAGRAM
3+
*&---------------------------------------------------------------------*
4+
*&
5+
*&---------------------------------------------------------------------*
6+
REPORT z_lc_anagram.
7+
8+
TYPES : BEGIN OF ty_dict,
9+
let TYPE c,
10+
val TYPE i,
11+
END OF ty_dict.
12+
13+
DATA: lt_dict TYPE HASHED TABLE OF ty_dict WITH UNIQUE KEY let,
14+
ls_dict TYPE ty_dict.
15+
16+
PARAMETERS : p1 TYPE string OBLIGATORY,
17+
p2 TYPE string OBLIGATORY.
18+
19+
20+
DATA(lv_lp1) = strlen( p1 ).
21+
DATA(lv_lp2) = strlen( p2 ).
22+
23+
IF lv_lp1 NE lv_lp2.
24+
WRITE :/ 'Not an anagram!'.
25+
ELSE.
26+
27+
DO lv_lp1 TIMES.
28+
29+
DATA(lv_ind) = sy-index - 1.
30+
31+
DATA(lv_char) = p1+lv_ind(1).
32+
33+
READ TABLE lt_dict ASSIGNING FIELD-SYMBOL(<fs_dict>) WITH KEY let = lv_char.
34+
IF sy-subrc NE 0.
35+
CLEAR: ls_dict.
36+
ls_dict-let = lv_char.
37+
ls_dict-val = 1.
38+
INSERT ls_dict INTO TABLE lt_dict.
39+
40+
ELSE.
41+
<fs_dict>-val = <fs_dict>-val + 1 .
42+
43+
ENDIF.
44+
45+
DATA(lv_char2) = p2+lv_ind(1).
46+
47+
READ TABLE lt_dict ASSIGNING <fs_dict> WITH KEY let = lv_char2.
48+
IF sy-subrc NE 0.
49+
CLEAR: ls_dict.
50+
ls_dict-let = lv_char2.
51+
ls_dict-val = -1.
52+
INSERT ls_dict INTO TABLE lt_dict.
53+
54+
ELSE.
55+
<fs_dict>-val = <fs_dict>-val - 1 .
56+
57+
ENDIF.
58+
59+
ENDDO.
60+
61+
62+
DELETE lt_dict WHERE val = 0.
63+
IF lt_dict IS INITIAL .
64+
WRITE: / 'Anagram found'.
65+
ELSE.
66+
WRITE: / 'Not an Anagram '.
67+
ENDIF.
68+
69+
ENDIF.

src/z_lc_anagram.prog.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<PROGDIR>
6+
<NAME>Z_LC_ANAGRAM</NAME>
7+
<SUBC>1</SUBC>
8+
<RLOAD>E</RLOAD>
9+
<FIXPT>X</FIXPT>
10+
<UCCHECK>X</UCCHECK>
11+
</PROGDIR>
12+
<TPOOL>
13+
<item>
14+
<ID>R</ID>
15+
<ENTRY>Program Z_LC_ANAGRAM</ENTRY>
16+
<LENGTH>20</LENGTH>
17+
</item>
18+
</TPOOL>
19+
</asx:values>
20+
</asx:abap>
21+
</abapGit>

src/z_lc_binary_tree.prog.abap

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
*&---------------------------------------------------------------------*
2+
*& Report Z_LC_BINARY_TREE
3+
*&---------------------------------------------------------------------*
4+
*&
5+
*&---------------------------------------------------------------------*
6+
REPORT z_lc_binary_tree.
7+
8+
9+
TYPES: BEGIN OF ty_binarybtree,
10+
value TYPE i,
11+
left TYPE REF TO data,
12+
right TYPE REF TO data,
13+
END OF ty_binarybtree.
14+
15+
TYPES: lty_i TYPE STANDARD TABLE OF i WITH EMPTY KEY .
16+
17+
DATA: btree TYPE ty_binarybtree.
18+
19+
20+
START-OF-SELECTION.
21+
22+
DATA(lt_values) = VALUE lty_i( ( 2 ) ( 1 ) ( 3 ) ( 6 ) ( 9 ) ( 5 ) ) .
23+
24+
25+
LOOP AT lt_values INTO DATA(ls_values).
26+
27+
PERFORM add_value USING btree ls_values.
28+
29+
ENDLOOP.
30+
31+
32+
SKIP.
33+
WRITE:/ 'Binary btree List '.
34+
WRITE:/ '======================'.
35+
SKIP.
36+
37+
PERFORM print_value USING btree.
38+
39+
40+
41+
42+
*&---------------------------------------------------------------------*
43+
*& Form add_value
44+
*&---------------------------------------------------------------------*
45+
*& text
46+
*&---------------------------------------------------------------------*
47+
*& --> BTREE
48+
*& --> LS_VALUE
49+
*&---------------------------------------------------------------------*
50+
FORM add_value USING btree TYPE ty_binarybtree
51+
val TYPE i.
52+
53+
FIELD-SYMBOLS: <lbtree> TYPE ty_binarybtree.
54+
DATA: work TYPE ty_binarybtree.
55+
56+
IF btree IS INITIAL.
57+
58+
btree-value = val.
59+
CLEAR: btree-left, btree-right.
60+
CREATE DATA btree-left TYPE ty_binarybtree.
61+
CREATE DATA btree-right TYPE ty_binarybtree.
62+
63+
ELSE.
64+
65+
IF val LE btree-value.
66+
67+
ASSIGN btree-left->* TO <lbtree>.
68+
PERFORM add_value USING <lbtree> val .
69+
ELSE.
70+
ASSIGN btree-right->* TO <lbtree>.
71+
PERFORM add_value USING <lbtree> val .
72+
73+
ENDIF.
74+
75+
76+
77+
78+
ENDIF.
79+
80+
ENDFORM.
81+
*&---------------------------------------------------------------------*
82+
*& Form print_value
83+
*&---------------------------------------------------------------------*
84+
*& text
85+
*&---------------------------------------------------------------------*
86+
*& --> BTREE
87+
*&---------------------------------------------------------------------*
88+
FORM print_value USING btree TYPE ty_binarybtree.
89+
90+
FIELD-SYMBOLS: <bintree> TYPE any.
91+
92+
IF btree IS NOT INITIAL.
93+
94+
ASSIGN btree-left->* TO <bintree>.
95+
PERFORM print_value USING <bintree>.
96+
97+
WRITE: btree-value.
98+
99+
ASSIGN btree-right->* TO <bintree>.
100+
PERFORM print_value USING <bintree>.
101+
102+
ENDIF.
103+
104+
105+
ENDFORM.

src/z_lc_binary_tree.prog.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<PROGDIR>
6+
<NAME>Z_LC_BINARY_TREE</NAME>
7+
<SUBC>1</SUBC>
8+
<RLOAD>E</RLOAD>
9+
<FIXPT>X</FIXPT>
10+
<UCCHECK>X</UCCHECK>
11+
</PROGDIR>
12+
<TPOOL>
13+
<item>
14+
<ID>R</ID>
15+
<ENTRY>Program Z_LC_BINARY_TREE</ENTRY>
16+
<LENGTH>24</LENGTH>
17+
</item>
18+
</TPOOL>
19+
</asx:values>
20+
</asx:abap>
21+
</abapGit>
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
*&---------------------------------------------------------------------*
2+
*& Report Z_LC_FIND_WORDS_FROM_CHAR
3+
*&---------------------------------------------------------------------*
4+
*&
5+
*&---------------------------------------------------------------------*
6+
REPORT z_lc_find_words_from_char.
7+
8+
9+
10+
TYPES: tty_words TYPE STANDARD TABLE OF string WITH EMPTY KEY,
11+
tty_chars TYPE STANDARD TABLE OF c WITH EMPTY KEY.
12+
13+
DATA(lt_words) = VALUE tty_words( ( `coding` ) ( `apple`) ( `google`) ( `sreenith`) ( `pop`) ).
14+
DATA(lt_chars) = VALUE tty_chars( ( 'a' ) ( 'e') ( 'g') ( 'o') ( 'p') ( 'o') ( 'l') ( 'p') ( 'e') ( 'g') ).
15+
16+
17+
TYPES: BEGIN OF ty_str,
18+
char TYPE c,
19+
val TYPE i,
20+
END OF ty_str.
21+
22+
23+
DATA: lt_char_val TYPE HASHED TABLE OF ty_str WITH UNIQUE KEY char,
24+
ls_char_val TYPE ty_str,
25+
lt_char_temp TYPE HASHED TABLE OF ty_str WITH UNIQUE KEY char.
26+
27+
28+
TRANSLATE sy-abcde TO LOWER CASE.
29+
30+
DATA(j) = 0.
31+
32+
DO 26 TIMES.
33+
34+
ls_char_val-char = sy-abcde+j(1).
35+
ls_char_val-val = 0.
36+
37+
INSERT ls_char_val INTO TABLE lt_char_val.
38+
j = j + 1.
39+
ENDDO.
40+
41+
LOOP AT lt_chars INTO DATA(ls_chars).
42+
43+
READ TABLE lt_char_val ASSIGNING FIELD-SYMBOL(<lfs_char_val>) WITH KEY char = ls_chars.
44+
IF sy-subrc = 0.
45+
<lfs_char_val>-val = <lfs_char_val>-val + 1.
46+
ENDIF.
47+
48+
ENDLOOP.
49+
50+
51+
LOOP AT lt_words ASSIGNING FIELD-SYMBOL(<lfs_words>).
52+
53+
DATA(i) = 0.
54+
55+
DATA(lv_counter) = 0.
56+
DATA(lv_strlen) = strlen( <lfs_words> ).
57+
58+
CLEAR: lt_char_temp[].
59+
60+
lt_char_temp[] = lt_char_val[].
61+
62+
WHILE i < lv_strlen .
63+
64+
DATA(lv_char) = <lfs_words>+i(1).
65+
66+
READ TABLE lt_char_temp WITH KEY char = lv_char ASSIGNING FIELD-SYMBOL(<lfs_temp>).
67+
IF sy-subrc = 0 AND <lfs_temp>-val > 0 .
68+
69+
<lfs_temp>-val = <lfs_temp>-val - 1.
70+
lv_counter = lv_counter + 1.
71+
ELSE.
72+
EXIT.
73+
ENDIF.
74+
75+
i = i + 1.
76+
ENDWHILE.
77+
78+
IF lv_counter = lv_strlen.
79+
WRITE : <lfs_words>.
80+
ENDIF.
81+
ENDLOOP.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<PROGDIR>
6+
<NAME>Z_LC_FIND_WORDS_FROM_CHAR</NAME>
7+
<SUBC>1</SUBC>
8+
<RLOAD>E</RLOAD>
9+
<FIXPT>X</FIXPT>
10+
<UCCHECK>X</UCCHECK>
11+
</PROGDIR>
12+
<TPOOL>
13+
<item>
14+
<ID>R</ID>
15+
<ENTRY>Find words from char set</ENTRY>
16+
<LENGTH>24</LENGTH>
17+
</item>
18+
</TPOOL>
19+
</asx:values>
20+
</asx:abap>
21+
</abapGit>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
*&---------------------------------------------------------------------*
2+
*& Report Z_LC_REVERSAL_OF_SIGNEDINTEGE2
3+
*&---------------------------------------------------------------------*
4+
*&
5+
*&---------------------------------------------------------------------*
6+
REPORT z_lc_reversal_of_signedintege2.
7+
8+
DATA: lv_upperbound TYPE i VALUE 2147483647, "edge case max
9+
lv_lowerbound TYPE i VALUE -2147483648. "edge case min
10+
DATA: lv_last TYPE i,
11+
lv_reverse TYPE i.
12+
13+
PARAMETERS: p_input TYPE i.
14+
15+
16+
WHILE p_input > 0.
17+
18+
lv_last = p_input MOD 10.
19+
20+
IF lv_reverse > lv_upperbound / 10 OR ( lv_reverse = lv_upperbound / 10 AND lv_last > 7 ) .
21+
WRITE : / 'reverse is greater than upper bound of integer '.
22+
EXIT.
23+
ENDIF.
24+
25+
IF lv_reverse < lv_lowerbound / 10 OR ( lv_reverse = lv_lowerbound / 10 AND lv_last < -8 ) .
26+
WRITE : / 'reverse is greater than lower bound of integer '.
27+
EXIT.
28+
ENDIF.
29+
30+
lv_reverse = lv_reverse * 10 + p_input MOD 10.
31+
p_input = p_input DIV 10.
32+
33+
ENDWHILE.
34+
35+
WRITE: lv_reverse.

0 commit comments

Comments
 (0)