Java移除字符串中的重复字符

基本的两种方法 
1、使用正则表达式。

public String removeDuplicateChars(String str)
{
    return str.replaceAll("(?s)(.)(?=.*\\1)", "");
}

(?s) 开启单行模式 dotall 让. 号匹配任意字符 
(.) 任意字符 并捕获在第一组 
(?=.*\1) 这是断言, 表示后面内容将是 任意个字符加上第一组所捕获的内容 这样子,如果这整个式子匹配到,表示,第一个捕获组内容在字符串中,至少出现两次,替换为 “” 空串. 进行 全局替换后, 整个字符串所出现的字符将不重复。

2、使用遍历。

public String removeDuplicateChars(String str)
{
    String[] strs = str.split("");  //表示对这个地方看不懂,为什么以空字符串切割
    List<String> list = new ArrayList<String>();
    StringBuffer buffer = new StringBuffer();

    for(Stirng s : strs)
    {
        if(!list.contains(s))
        {
            list.add(s);
            buffer.append(s);
        }
    }
    return buffer.toString();
}
时间: 2024-07-30 10:18:26

Java移除字符串中的重复字符的相关文章

JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符

package com.pb.demo.packclass.demo1; import java.util.HashSet; /** * 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符 例如: 原始字符串是"abc",打印得到下列所有组合情况 "a" "b" "c" "ab" "bc" "ca" "ba" "cb"

c# 过滤字符串中的重复字符

有字符串"a,s,d,v,a,v",如果想去除其中重复的字符,怎么做? 下面是一个方法,用Hashtable来记录唯一字符,排除重复字符,仅供参考. 1.过滤方法: public class OperationString { /// <summary> /// 过滤字符串中的重复字符 /// </summary> /// <param name="str">要过滤的字符串</param> /// <return

计算 num 的 n 次幂、n 的阶乘、斐波那契数列、字符串的字节长度、去除字符串中的重复字符

1 //计算 num 的 n 次幂 2 function numPow(num, n) { 3 if (n == 1) { 4 return num; 5 } 6 return num * numPow(num, n - 1); 7 } 8 9 //计算 n 的阶乘 10 function nFactorial(n) { 11 if (n == 1) { 12 return 1; 13 } 14 return n * nFactorial(n - 1); 15 } 16 17 //斐波那契数列,

将字符串中的重复字符剔除

数据库环境:SQL SERVER2008R2 在网上看到一网友提的需求,要求把字符串列中的重复字符剔除,只保留一个.我简单的把需求描述下, 比如,有一个t表,A1列存字符串,存储的内容如下: A1 A,B,B,C C,C,D F,S,S 剔除重复字符后的结果如下: A1 A,B,C C,D F,S 思路:每一行记录生成一个行号,把字符串中的字符全部存到一列,根据行号和字符去重,然后再用FOR XML PATH合并到一行 /*数据准备*/ WITH x0 AS ( SELECT 1 AS id ,

字符串中不重复字符的最大长度计算

例如:有一个随机字符串我们需要得到这个字符串中不重复的子字符串最长的那个长度. function getMaxLength(str) { let string = '' // 返回要求的字符串 let strLength = 0 // 返回要求字符串长度 for (let i = 0; i < str.length; i++) { if (!string.includes(str.charAt(i))) { string += str.charAt(i) // 输入字符串起始位开始判断没有重复的

Java 实例 - 删除字符串中的一个字符

package string; public class deleteString { /** * 删除字符串 * @param args */ public static void main(String[] args) { String str = "helloo,this is my third blog"; String str1 = removeCharAt(str, 5); System.out.println(str1); } public static String r

SQL存储过程替换字符串中的重复字符

CREATE PROCEDURE [dbo].[ReplaceSameStr] @str varchar(8000)ASdeclare @ret varchar(8000),@return varchar(8000) select @str = @str select @str = @str+',' while charindex(',',@str) > 0 beginselect @ret = substring(@str,1,charindex(',',@str)-1) select @re

《剑指Offer》:移除字符串中重复的字符_2

题目 移除字符串中重复的字符,字符串由小写字母构成 如abcadc移除后变为abcd, 要求:时间复杂度尽可能小 与上篇博文(http://blog.csdn.net/u010412719/article/details/48086641)不一样的地方是:虽然都是移除字符串中重读的字符,但是这里的要求是时间复杂度尽可能小,对空间没有要求. 思路 思路:要求时间复杂度尽可能小而对空间没有限制,这就需要我们用控件换取时间 /* 移除字符串中重复的字符,字符串由小写字母构成 如abcadc移除后变为a

《剑指Offer》:移除字符串中重复的字符

题目: 移除字符串中重复的字符, 如abcadc移除后变为abcd, 注意:可以额外定义一两个变量,但不允许额外开辟一个数组. 思路 这里要求了空间复杂度为O(1),那我们只能用最简单的遍历方法,先让第一个字符与后面的字符一一比较,遇到重复的就把重复的字符用'\0'替换掉,再让第二个字符与右面的字符一一比较,遇到重复的,就把重复的字符用'\0'代替,如此循环,直到最后一个字符,当然同时还要在每次遇到'\0'时(重复字符出现的位置,已被填充为'\0'),将后面的字符移到前面来,替换掉'\0',最后