Tuesday, October 9, 2012

Palindrome detector

The string is palindrom if reverted it equals to source string. Here is simple algorithm to detect is the source string a palindrome or not.

CREATE OR REPLACE PROCEDURE isPalindrom(l_string VARCHAR2)
IS
  src_string VARCHAR2(32767) := l_string;
  len_src_string INTEGER := LENGTH(src_string);
  j INTEGER;
  
  FUNCTION getChar(i INTEGER) RETURN CHAR
  IS
  BEGIN
    RETURN SUBSTR(src_string, i, 1);
  END;

BEGIN
  
  j := 1;
  LOOP
    EXIT WHEN (j = ROUND(len_src_string/2) + 1) 
              OR getChar(j) <> getChar(len_src_string-j+1);
    j := j+1;
  END LOOP;
  
  IF getChar(j) = getChar(len_src_string-j+1) THEN
    DBMS_OUTPUT.PUT_LINE(l_string||' IS POLYNDROM');
  ELSE
    DBMS_OUTPUT.PUT_LINE(l_string||' IS NOT POLYNDROM');
  END IF;


  EXCEPTION
  WHEN OTHERS THEN
     DBMS_OUTPUT.PUT_LINE('SQLCODE: ' || SQLCODE);
     DBMS_OUTPUT.PUT_LINE('SQLERRM: ' || SQLERRM);     
END;

No comments:

Post a Comment