java如何实现某一字符连续出现三次以上只保留三次?

举个例子,假设特定字符是2和5。
原字符串12222234555556666666。
最终处理完以后得到为1222345556666666。
解释:其中2和5是特定字符,重复了3次以上需要只保留3次;但是6不是特定字符,所以重复多少次都可以。
最好能用正则实现,这样代码能简洁一些。如果用循环的话,希望能有一个时间复杂度低的方法。

1、根据题意需要有两个步骤,第一识别第二替换,使用现成方法即可
2、示例如下,指定数字即代码中的2|5可根据需要自行替换
String s ="1222223455555555555555556666666";
System.out.println(s.replaceAll("([2|5])\\1{1,}", "$1$1$1"));追问

如果是2和5混合出现连续3次以上只保留前三个呢?
比如,252525,替换后为252

追答

1、抱歉刚看到,这个道理其实是一样的,替换目标字符与次数限制就行。

2、示例

String s ="252525";
//--匹配25输出后拼接目标字符首位,因连续出现所有保留字符第三位定是目标字符首位
System.out.println(s.replaceAll("(25){3}", "$1").concat("2"));

温馨提示:内容为网友见解,仅供参考
第1个回答  2021-04-13
用正则表达式的话就需要找出匹配三次以上2和5的group组,将其替换为三次,匹配可以[2]{3}取,但是限制是仅限连续数字。
第2个回答  2021-04-13
你能想到的算法时间复杂度是多少

java如何实现某一字符连续出现三次以上只保留三次?
1、根据题意需要有两个步骤,第一识别第二替换,使用现成方法即可 2、示例如下,指定数字即代码中的2|5可根据需要自行替换 String s ="1222223455555555555555556666666";System.out.println(s.replaceAll("([2|5])\\\\1{1,}", "$1$1$1"));...

用java编 给定一字符串"today is a special day",长度为任意,要求找 ...
第一步 将字符串转化为字符数组,假设数组char [] ch 第二步 创建HashMap对象map,key用来表示某个字符,值是这个字符出现的次数,创建一个HashSet对象set,用于判断一个字符是不是出现了多次 第三步 遍历字符数组ch,将数组的元素添加到set集合中去,boolean b=set.add(c);如果返回值为false说明这...

java中如何统计某个字母在一个字符串中出现了多少次啊
1、根据length获取字符串长度 String s = "abcdedfae";\/\/定义一个字符串int len = s.length();\/\/获取原来的字符串长度2、通过replaceAll方式,把字符串中该字母替换成空 String s1 = s.replaceAll(要统计的字母,"");3、获取替换后的字符串长度 int len2 = s1.length();4、原来的字符串长度...

在JAVA中,用正则表达式 匹配指定数字次数的代码怎么写呢,求助!求助...
1、2、4各最多出现1次或不出现;3最多出现2次以下或不出现;其他符号非法;设c计数 public class Test { static public boolean validate(String t){ int c[]=new int[4];for(char ch:t.toCharArray()){ switch(ch){ case '1':case '2':case '3':case '4':c[ch-'1']++;if(c[...

用java编写一个函数,统计一个字符串中每个字母出现的次数,谢谢啦_百度...
import java.util.Set;import java.util.TreeMap;\/ 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)分析:A:定义一个字符串(可以改进为键盘录入)B:定义一个TreeMap集合 键:Character 值:Integer C:把字符串转换为字符数组 D:遍历字符数组,得到...

JAVA 对于给定的一个字符串,统计其中数字字符出现的次数.
void main(String[] args) { String[] arr = {"1","2","1","1"}; int num = 0,weizhi = 0; for(int i = 0; i < arr.length; i++){ if("1".trim().equals(arr[i])){ weizhi = weizhi+1; System.out.println("第"+(weizhi)+"次出现,位置:...

Java正则表达式怎么匹配连续多个同一字符
+ 匹配前面的子表达式一次或多次。例如,'zo+'能匹配 "zo"以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。匹配前面的子表达式零次或多次。例如,zo 能匹配 "z"以及 "zoo"。等价于{0,}。

在java中求一个字符串在另一个字符串中多次出现的位置。用indexOf方 ...
= -1){System.out.println (word + " 在第 " + offset + " 个位置出现过.");readWord (input, word, ++offset, ++count);}else{System.out.println (word + " 总共出现了:" + count + " 次.");}}public static void main ( String[] args ){String input = "Look buddy, U ...

用Java编写一个程序对用户输入的任意一组字符如{3,1,4,7,2,1,1,2...
import java.util.HashMap;import java.util.Scanner;public class A { public static void main(String argvs[]) { String line; Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { line = sc.nextLine(); if (line.length()==0) break; String [...

java中有没有将一个字符串重复N次功能类或方法
java字符串连接一般有三种方式: 直接用+号连接。 用StringBuilder类 。 用StringBuffer类。 三种字符串连接的比较:StringBuffer是线程安全的; StringBuilder不是线程安全的,但性能稍好一些,在不需要线程安全的字符串连接,尽量使用StringBuilder。(大部分情况下都不需要线程安全)jdk1.5的编译器也是把...

相似回答