java小算法—去除字符串重复字符

1.需求描述


去除字符串中相邻重复的字符。


代码:

public void initJava(){
        String str="aabbbccccdddddeeeeeeeeefff234tttdddfffbbbggg";
        String result=removeRepeatChar(str);
        Log.d("TAG","去重前----:"+str);
        Log.d("TAG","去重后----:"+result);
    }

    public String removeRepeatChar(String s) {
        if (s == null) {
            return "";
        }
        StringBuffer sb = new StringBuffer();
        int i = 0;
        int len = s.length();
        while (i < len) {
            char c = s.charAt(i);
            sb.append(c);
            i++;
            while (i < len && s.charAt(i) == c) {//这个是如果这两个值相等,就让i+1取下一个元素
                i++;
            }
        }
        return sb.toString();
    }


结果:

去重前----:aabbbccccdddddeeeeeeeeefff234tttdddfffbbbggg
去重后----:abcdef234tdfbg





2.需求描述


去除字符串中所有重复的字符(只保留第一个重复的字符)


代码:

public void initJava(){
        String str="aabbbccccdddddeeeeeeeeefff234tttdddfffbbbggg";
        removeMethod(str);
    }

    public void removeMethod(String s) {
        Log.d("TAG", "去重前----:" + s);
        StringBuffer sb = new StringBuffer();
        int len = s.length();
        for (int i = 0; i < len; i++) {
            char c = s.charAt(i);
            if (s.indexOf(c) ==s.lastIndexOf(c)) {//此字符第一次位置和最后位置一致 即肯定没有重复的直接添加
                sb.append(c);
            } else {//同理 次字符出现过多次
                int fristposition=s.indexOf(c);//次字符第一次出现的位置
                if(fristposition==i){//第一次出现的位置和当前位置一致 即第一次出现添加
                    sb.append(c);
                }
            }
        }
        Log.d("TAG", "去重后----:" + sb.toString());
    }

结果:

去重前----:aabbbccccdddddeeeeeeeeefff234tttdddfffbbbggg
去重后----:abcdef234tg


你可能感兴趣的:(Java,常见算法)