-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathimplement_strstr()
More file actions
64 lines (56 loc) · 2.1 KB
/
Copy pathimplement_strstr()
File metadata and controls
64 lines (56 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
*&------------------------------------------------------------------------------------------------------------------------------------------*
*& Report ZTEST_IMPLEMENT_STRSTR
*&------------------------------------------------------------------------------------------------------------------------------------------*
*Implement strStr().
*Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
*
*Clarification:
*
*What should we return when needle is an empty string? This is a great question to ask during an interview.
*
*For the purpose of this problem, we will return 0 when needle is an empty string. This is consistent to C's strstr() and Java's indexOf().
*
*
*
*Example 1:
*
*Input: haystack = "hello", needle = "ll"
*Output: 2
*
*Example 2:
*Input: haystack = "aaaaa", needle = "bba"
*Output: -1
*
*Example 3:
*Input: haystack = "", needle = ""
*Output: 0
*
*&-----------------------------------------------------------------------------------------------------------------------------------------*
REPORT ztest_implement_strstr.
"This is very easy in abap using predefined function "find". We will cover both standard function as well as algorithmic.
PARAMETERS haystack TYPE string DEFAULT 'aaaaaa'.
PARAMETERS needle TYPE string DEFAULT 'll'.
WRITE:/ |Scenario 1 with predefined function 'FIND'|.
ULINE.
TRY .
DATA(output) = find( val = haystack sub = needle ).
CATCH cx_sy_range_out_of_bounds.
ENDTRY.
WRITE:/ |Output is { output }|.
WRITE:/ |Scenario 2 without predefined function |. ULINE.
TYPES: BEGIN OF match,
word TYPE string,
pos TYPE i,
END OF match.
TYPES word TYPE STANDARD TABLE OF match WITH KEY word.
DATA(haystack_length) = strlen( haystack ).
DATA(words) = VALUE word( FOR i = 0 THEN i + 1 UNTIL i > haystack_length - 1
FOR j = haystack_length - i THEN j - 1 UNTIL j < 1
( word = haystack+i(j) pos = i + 1 ) ).
DATA(word) = VALUE #( words[ word = needle ] OPTIONAL ).
IF word IS NOT INITIAL.
output = word-pos.
ELSE.
output = 0.
ENDIF.
WRITE:/ |Output is { output - 1 }|.