Sunday, October 21, 2012

Arrays2

Q2. Write code to remove the duplicate characters in a string without using any additional buffer.
Answer:
* As strings are immutable in java so we have to generate a new string.

import java.util.HashSet;
import java.util.Set;

public class Arrays2 {
    public static String removeDuplicates(String s) {
        if (s == null) {
            return null;
        }

        StringBuilder r = new StringBuilder("");
        Set<Character> chars = new HashSet<Character>();

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (!chars.contains(c)) {
                chars.add(c);
                r.append(c);
            }
        }
        return r.toString();
    }

    public static void main(String[] args) {
        String s1 = "aaaa";
        String s2 = "aabbcc";
        String s3 = "abcd";
        String s4 = "ababab";
        String s5 = "";
        String s6 = null;
        String s7 = "a  b  c";

        System.out.println(removeDuplicates(s1));
        System.out.println(removeDuplicates(s2));
        System.out.println(removeDuplicates(s3));
        System.out.println(removeDuplicates(s4));
        System.out.println(removeDuplicates(s5));
        System.out.println(removeDuplicates(s6));
        System.out.println(removeDuplicates(s7));
    }
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.