输入一个字符串,要求吧其中重复的去除比如输入:aaabbaccdcbe
    输出:abcde3Q

解决方案 »

  1.   

      这个问题的实质就是找出那些字符出现过。可以利用ASCII码表法,先建一个128长的bool数组(视情况可能是256),然后遍历输入的字符串,那个字符出现了就将与之对应的数组元素设为true,可以使用这样的语句
         table[str[i]] = ture;
    . 最后遍历一下bool数组就行了。
      

  2.   

            String a = "aaabbaccdcbe";
            char[] b = a.toCharArray();
            char[] c = new char[b.length];
            for (int i = 0; i < b.length; i++) {
                int j = 0;
                for (; j < c.length; j++) {
                    if (c[j] == b[i] || c[j] == 0) break;
                }            if (j < c.length-1) {
                    c[j] = b[i];
                }
            }        System.out.println(c);
      

  3.   

    public class TrimTester {
        public static void main(String[] args) {
            String a = "aaabbaccdcbe";
            char[] b = a.toCharArray();
            char[] c = new char[b.length];
            for (int i = 0; i < b.length; i++) {
                int j = 0;
                for (; j < c.length; j++) {
                    if (c[j] == b[i] || c[j] == 0) break;
                }            if (j < c.length-1) {
                    c[j] = b[i];
                }
            }
            System.out.println(c);
        }
    }
      

  4.   


    public static void main(String[] args) {
    String s = "aaabbaccdcbe";
    System.out.println(s.indexOf("d"));
    StringBuffer str = new StringBuffer();
    for(int i = 0;i<s.length();i++){
    if(str.indexOf(String.valueOf(s.charAt(i))) == -1){
    str.append(s.charAt(i));
    }

    }
    System.out.println(str);
    }
      

  5.   

    package DelDuplicate;import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.nio.charset.Charset;
    import java.util.ArrayList;class DelDuplicate { /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine();
    StringBuffer s = new StringBuffer(str);
    DeleteDup(s);
    } public static void DeleteDup(StringBuffer str1) {
    StringBuffer temp = str1;
    for (int i = 1; i < temp.length(); i++) {
    if (temp.charAt(0) == temp.charAt(i))
    temp.deleteCharAt(i);
    }
    StringBuffer temp1 = new StringBuffer();
    temp1.append(temp.charAt(0));
    temp.deleteCharAt(0);
    System.out.print(temp1);
    DeleteDup(temp);
    }
    }那我之前自己写的代码为什么老是不行呢?请教
      

  6.   


    HashSet hs = new HashSet();
    String str = "aaabbaccdcbe";
    for(int i = 0; i < str.length(); i ++){
        hs.add(str.substring(i, i+1));
    }
    System.out.print(hs.toString());这样就是不能保证是a,b,c,d,e的顺序了。不过可以自己用Comparator接口排序
      

  7.   

    public static void main(String[] args) {
            String s = "aaabbaccdcbe";
            System.out.println(s.indexOf("d"));
            StringBuffer str = new StringBuffer();
            for(int i = 0;i<s.length();i++){
                if(str.indexOf(String.valueOf(s.charAt(i))) == -1){
                    str.append(s.charAt(i));
                }
                
            }
            System.out.println(str);
        }
      

  8.   

    用set,set里面不允许重复。把每一个字符放进去,最后出来的结果肯定是不重复的。
    用list也行,插入的时候判断一下有没有。
      

  9.   

    for (int i = 1; i < temp.length(); i++) { 
    if (temp.charAt(0) == temp.charAt(i)) 
    temp.deleteCharAt(i); 

    StringBuffer temp1 = new StringBuffer(); 
    temp1.append(temp.charAt(0)); 
    temp.deleteCharAt(0); 
    System.out.print(temp1); 
    DeleteDup(temp); 


    这里面把i--
      

  10.   

    i--?为什么要用i--呢
    难道

    for(i=temp.length()-1;i>0;i--)
      

  11.   

    改成public static void DeleteDup(StringBuffer str1) {
    StringBuffer temp = str1;
    for (int i=temp.length()-1;i>0;i--) {
    if (temp.charAt(0) == temp.charAt(i))
    temp.deleteCharAt(i);
    }
    StringBuffer temp1 = new StringBuffer();
    temp1.append(temp.charAt(0));
    temp.deleteCharAt(0);
    System.out.print(temp1);
    DeleteDup(temp);
    }
    后结果是能出来,但是Eclipse 里报StringIndexOutOfBoundsException: String index out of range: 0错误,大家帮忙指正下。
      

  12.   


    public class strTest { public String strTest(String str){
    String st = "";
    for (int i=0;i<str.length();i++){
    String s1 = str.substring(i,i+1);
    if(st.indexOf(s1) < 0){
    st = st + s1;
    }
    }
    return st;
    }
    public static void main(String[] args) {
    strTest str1 = new strTest();
    System.out.println(str1.strTest("aaaakjkljljlopii[ipi"));
    }}这样比较适合初学者看懂,保证顺序
      

  13.   


    temp.deleteCharAt(0);
    DeleteDup(temp);你的问题在这里,当temp里面只有一个元素的时候,再删就会产生问题了,加个判断就可以 public static void DeleteDup(StringBuffer str1) {
    StringBuffer temp = str1;
    for (int i = 1; i < temp.length(); i++) {
    if (temp.charAt(0) == temp.charAt(i))
    temp.deleteCharAt(i);
    }
    StringBuffer temp1 = new StringBuffer();
    temp1.append(temp.charAt(0));
    System.out.print(temp1);
    if (temp.length() > 1){
    temp.deleteCharAt(0);
    DeleteDup(temp);
    }
    }