ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Day8/9] 409. Longest Palindrome
    @StudY/.algorithm 2019. 2. 26. 10:12

    initial solution

    import java.util.Hashtable;



    class Solution {

        public int longestPalindrome(String s) {

            int longestLength=0;

            int tempCount=0;

                

            Hashtable<Integer, Integer> letters = new Hashtable<Integer, Integer>();

            

            for (int i=0; i<s.length(); i++) {

                if(letters.containsKey(s.charAt(i)+0)) {

                    longestLength+=2;

                    letters.remove(s.charAt(i)+0);

                } else {

                    letters.put(s.charAt(i)+0,0);

                }

            }

           

            if (letters.isEmpty()) return longestLength;

            return longestLength+1;

        }

    }

    Runtime: 12 ms, faster than 26.03% of Java online submissions for Longest Palindrome.
    Memory Usage: 36.8 MB, less than 30.20% of Java online submissions forLongest Palindrome.







    Accepted12 ms36.8 MBjava





    Refactor the initial solution

    import java.util.ArrayList;



    class Solution {

        public int longestPalindrome(String s) {

            int longestLength=0;

                

            ArrayList letters = new ArrayList();

            

            for (int i=0; i<s.length(); i++) {

                if(letters.contains(s.charAt(i))) {

                    longestLength+=2;

                    letters.remove(letters.indexOf(s.charAt(i)));

                } else {

                    letters.add(s.charAt(i));

                }

            }

           

            if (letters.isEmpty()) return longestLength;

            return longestLength+1;

        }

    }


    Runtime: 8 ms, faster than 63.83% of Java online submissions for Longest Palindrome.
    Memory Usage: 37.2 MB, less than 8.72% of Java online submissions forLongest Palindrome.
    Accepted8 ms37.2 MBjava


    import java.util.ArrayList;


    class Solution {

        public int longestPalindrome(String s) {

            int longestLength=0;

            int sumOfletters=0;

            int[] letters = new int[128];

            

            for (int i=0; i<s.length(); i++) {

                if(letters[s.charAt(i)+0]==1) {

                    longestLength+=2;

                    letters[s.charAt(i)+0]=0;

                } else {

                    letters[s.charAt(i)+0]=1;

                }

            }

           

            for (int i=0; i<128; i++) {

                sumOfletters+=letters[i];

            }

            

            if (sumOfletters==0) return longestLength;

            return longestLength+1;

        }

    }


    Runtime: 5 ms, faster than 89.90% of Java online submissions for Longest Palindrome.
    Memory Usage: 37.2 MB, less than 9.73% of Java online submissions forLongest Palindrome.
    Accepted5 ms37.2 MBjava




    댓글

Designed by Tistory.