「JAVA字符串去重复算法」java统计字符串重复字符

博主:adminadmin 2022-12-18 18:18:06 68

本篇文章给大家谈谈JAVA字符串去重复算法,以及java统计字符串重复字符对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

(算法)去除字符串中的重复字符(时间复杂度)

1.一般会想到遍历字符串,去除重复的字符,这样时间复杂度是O(n²),时间复杂度太高。

static String sub(String str){

StringBuffer result =newStringBuffer();

List list =new ArrayList();

char[] cs = str.toCharArray();

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

if(!list.contains(cs[i])){

result.append(cs[i]);

list.add(cs[i]);

}

}

returnresult.toString();

}

2.再仔细想一想

用java的String的indexOf方法来达到字符串去重的目的,indexOf的功能是返回指定字符在此字符串中第一次出现处的索引:

public static String QuChong(String str){

        StringBuilder sb=new StringBuilder();

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

            if(str.indexOf(str.charAt(i))==i){

                //第一次出现

                sb.append(str.charAt(i));

            }

        }

        String result=sb.toString();

        return result;

    }

java如何去掉字符串中重复的字符

lz  你好

这个就是一个比较简单的算法题 , 你可以自己写

但是用Java语言就不需要了 , Java自带泛型相关的类 , 很有用

其中TreeSet集合能自动识别添加的是否重复 , 重复的将不会添加 , 很方便

以下是实现代码:

import java.util.List;

import java.util.Scanner;

public class DeleteRepeated {

private String str;

private TreeSetString noReapted;//带有String类型的TreeSet泛型

        

    public DeleteRepeated() {

     Scanner in = new Scanner(System.in);

    

     System.out.println ("输入一个字符串:");

     str = in.nextLine();

    

     noReapted = new TreeSet();

    }

    

    //清楚重复的数据

    public void removeRepeated(){

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

     noReapted.add(""+str.charAt(i));

     //str.charAt(i)返回的是char型  所以先加一个""空格 , 转换成String型

     //TreeSet泛型能保证重复的不加入 , 而且有序

     }

    

     str = "";

    

     for(String index:noReapted){

     str += index;

     }

    

     //输出

     System.out.println (str);

    }

    

    public static void main(String[] args) {

     DeleteRepeated dr = new DeleteRepeated();

    

     dr.removeRepeated();

    }

}

运行截图:

希望能帮助你哈

求: 用 Java 正则去掉字符串中重复出现的字符!

举例:

1、String str = "abcdeabcdeabcdeaaaaaadddddceeeeabcccccccacadaeec";

str = str.replaceAll(reg, "");

System.out.println(str);

2、str = str.replaceAll("(?s)(.)(?=.*\\1)", "");

(?s)(.)(?=.*\1)

3、(?s) 开启单行模式 DOTALL 让. 号匹配任意字符

(.) 任意字符 并捕获在第一组

(?=.*\1) 这是断言, 表示后面内容将是 任意个字符加上第一组所捕获的内容

这样,如果这整个式子匹配到,表示,第一个捕获组内容在字符串中,至少出现两次,替换为 "" 空串.

进行 全局替换后, 整个字符串所出现的字符将不重复。

另外:

正则表达式默认是从左向右匹配, java中似乎没有逆向匹配的选项

所以你可以先反转字符串, 然后replace, 然后再反转

如下

JAVA字符串中去重复字符串

import java.util.ArrayList;

import java.util.List;

public class $ {

    public static void main(String[] args) {

        String str = "教练教练裁判裁判裁判运动员运动员";

        ListString data = new ArrayListString();

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

            String s = str.substring(i, i + 1);

            if (!data.contains(s)) {

                data.add(s);

            }

        }

        String result = "";

        for (String s : data) {

            result += s;

        }

        System.out.println(result);

    }

}

教练裁判运动员

JAVA字符串去重复算法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java统计字符串重复字符、JAVA字符串去重复算法的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-18,除非注明,否则均为首码项目网原创文章,转载请注明出处。