Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Palindrome

Former Member
0 Likes
2,068

hI,

I had written the following to accept the string and display the reverse of the string and find out whether it is a palindrome. Plesae let me know where is the mistake in this program.

DATA:

TEXT(20) VALUE 'MALAYALAM',

LEN TYPE I,

POS TYPE I,

NTEXT(20),

VCHAR.

COMPUTE LEN = STRLEN( TEXT ).

POS = LEN - 1.

DO LEN TIMES.

VCHAR = NTEXT+POS(1).

CONCATENATE NTEXT VCHAR INTO NTEXT.

POS = POS - 1.

ENDDO.

IF TEXT CS NTEXT.

WRITE:/ TEXT, 'IS PALINDROME'.

ELSE.

WRITE:/ TEXT, 'IS NOT A PALINDROME'.

ENDIF.

Thanks.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,725

Check out the below sample code ....



DATA: p1(1000) TYPE c VALUE 'MALAYALAM'.
DATA: p2(1000) TYPE c.
 
DATA: s_len TYPE i.
CONDENSE p1 NO-GAPS.
s_len = NUMOFCHAR( p1 ).
 
DATA: position TYPE i VALUE '0'.
DATA: position2 TYPE i.
DATA: offset1 TYPE i.
DO s_len TIMES.
  position2 = s_len - position - 1.
  p2+position2(1) = p1+position(1).
  position = position + 1.
ENDDO.
 
WRITE: / p1.
WRITE: / p2.
 
IF p1 = p2.
  WRITE: / 'This is a Palindrome!'.
ENDIF.  

hI,

I had written the following to accept the string and display the reverse of the string and find out whether it is a palindrome. Plesae let me know where is the mistake in this program.

DATA:

TEXT(20) VALUE 'MALAYALAM',

LEN TYPE I,

POS TYPE I,

NTEXT(20),

VCHAR.

COMPUTE LEN = STRLEN( TEXT ).

POS = LEN - 1.

DO LEN TIMES.

VCHAR = NTEXT+POS(1).

CONCATENATE NTEXT VCHAR INTO NTEXT.

POS = POS - 1.

ENDDO.

IF TEXT CS NTEXT.

WRITE:/ TEXT, 'IS PALINDROME'.

ELSE.

WRITE:/ TEXT, 'IS NOT A PALINDROME'.

ENDIF.

Thanks.

5 REPLIES 5
Read only

Former Member
0 Likes
1,725

Hi,

make len and pos as type N instead of I.because u r using pos as offset operator so it should be type N.


DATA:
TEXT(20) VALUE 'MALAYALAM',
LEN(2) TYPE n,
POS(2) TYPE n,
NTEXT(20),
VCHAR.

COMPUTE LEN = STRLEN( TEXT ).
POS = LEN - 1.
DO LEN TIMES.
VCHAR = TEXT+POS(1).
CONCATENATE NTEXT VCHAR INTO NTEXT.
POS = POS - 1.
ENDDO.
IF TEXT = NTEXT.
WRITE:/ TEXT, 'IS PALINDROME'.
ELSE.
WRITE:/ TEXT, 'IS NOT A PALINDROME'.
ENDIF.

rgds,

bharat.

Read only

Former Member
0 Likes
1,725

hey

this will definetly help u .

report zpalin no standard page heading.

"DATA str TYPE string value 'anoopg'.

parameters str type string.

data len type i value 0.

len = strlen( str ).

write : / 'length of the String =' , len.

data even type i value 0.

data temp type i.

data i type i.

data j type i.

temp = len mod 2.

if temp = 0.

data half type i.

data ch type char1.

data ch1 type char1.

data pos type char3.

data pos1 type char3.

data flag type i value 0.

half = len / 2.

i = 0.

pos1 = len - 1.

while half 0.

ch = str+pos(1).

pos = pos + 1.

half = half - 1.

ch1 = str+pos1(1).

if ch ch1.

flag = 1.

endif.

write : / 'ch =' ,ch ,'ch1=' , ch1.

pos1 = pos1 - 1.

endwhile.

if flag = 1.

write / 'not a palindrome'.

else.

write / 'cong.ts its a palidrome'.

endif.

else.

half = len / 2.

"write half.

half = half - 1.

i = 0.

pos1 = len - 1.

while half 0.

ch = str+pos(1).

pos = pos + 1.

half = half - 1.

ch1 = str+pos1(1).

if ch ch1.

flag = 1.

endif.

write : / 'ch =' ,ch ,'ch1=' , ch1.

pos1 = pos1 - 1.

endwhile.

if flag = 1.

write / 'not a palindrome'.

else.

write / 'cong.ts its a palidrome'.

endif.

endif.

<REMOVED BY MODERATOR>

regards,

rekha.

Edited by: Alvaro Tejada Galindo on Apr 14, 2008 5:21 PM

Read only

Former Member
0 Likes
1,725

Hi,

DATA:

TEXT(20) VALUE 'MALAYALAM',

LEN TYPE I,

POS TYPE I,

NTEXT(20),

VCHAR.

COMPUTE LEN = STRLEN( TEXT ).

POS = LEN - 1.

DO LEN TIMES.

VCHAR = TEXT+POS(1).

CONCATENATE NTEXT VCHAR INTO NTEXT.

POS = POS - 1.

ENDDO.

IF TEXT CS NTEXT.

WRITE:/ TEXT, 'IS PALINDROME'.

ELSE.

WRITE:/ TEXT, 'IS NOT A PALINDROME'.

ENDIF.

check this,

Regards,

Raghu

Read only

Former Member
0 Likes
1,726

Check out the below sample code ....



DATA: p1(1000) TYPE c VALUE 'MALAYALAM'.
DATA: p2(1000) TYPE c.
 
DATA: s_len TYPE i.
CONDENSE p1 NO-GAPS.
s_len = NUMOFCHAR( p1 ).
 
DATA: position TYPE i VALUE '0'.
DATA: position2 TYPE i.
DATA: offset1 TYPE i.
DO s_len TIMES.
  position2 = s_len - position - 1.
  p2+position2(1) = p1+position(1).
  position = position + 1.
ENDDO.
 
WRITE: / p1.
WRITE: / p2.
 
IF p1 = p2.
  WRITE: / 'This is a Palindrome!'.
ENDIF.  

Read only

Former Member
0 Likes
1,725

You can try with below code:

PARAMETERS: p_str TYPE char20.

DATA: p_rev TYPE char20.

CALL FUNCTION 'STRING_REVERSE'
  EXPORTING
    string    = p_str
    lang      = sy-langu
  IMPORTING
    rstring   = p_rev
  EXCEPTIONS
    too_small = 1
    OTHERS    = 2.

IF p_str EQ p_rev.
  WRITE:/ 'Palendrome'.
ELSE.
  WRITE:/ 'Not Palendrome'.
ENDIF.