用java编写一个字符串的程序,找出连续出现三次的字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java编写一个字符串的程序,找出连续出现三次的字符相关的知识,希望对你有一定的参考价值。

急求 望各位大神帮忙

java找出连续出现三次的字符,可以使用正则表达式,如下代码:

package com.qiu.lin.he;

import java.util.regex.Pattern;

public class CeShi 
public static void main(String[] args) 
// 定义一个字符串
String string = "adfaasfwqpkwefapadgjqw";
// 遍历字符串的所有字符
for (int i = 0; i < string.length(); i++) 
// 取得第i个字符,也可以用Character.toString(string.charAt(i));
String s = string.substring(i, i + 1);
// 如果通过s在这个字符串中出现了至少3次,输出该字符
if (Pattern.matches(".*" + s + ".*" + s + ".*" + s + ".*", string)) 
System.out.println(s);




运行结果如下:

参考技术A String str = "what is your name?";
Pattern pattern = Pattern.compile("
\\\\w3
, str.length");
 Matcher matcher = pattern.matcher(str);
while(matcher.find())    
 // 打印连续出现三次的字符~  
  System.out.println(matcher.group()); 

追问

确定表达式没有问题么?
为什么我照搬执行报Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed counted closure near index 6
\w3,str.length?

追答// 下面这个我测试了一把,可以run
String str = "what is yourrrr name?";

// 注意这句要在一行 
        Pattern pattern = Pattern.compile("(
\\\\w)\\\\13
,");

        Matcher matcher = pattern.matcher(str);

        while (matcher.find()) 

            // 打印连续出现三次的字符~   

            System.out.println(matcher.group());

        

参考技术B

用正则表达式吧,方法不唯一

//定义一个字符串
String string="adfaasfwqpkwefapadgjqw";
//遍历字符串的所有字符
for(int i=0;i<string.length();i++)
    //取得第i个字符,也可以用Character.toString(string.charAt(i));
    String s= string.substring(i, i + 1);
    //如果通过s在这个字符串中出现了至少3次,输出该字符
    if(Pattern.matches(".*" + s+ ".*" + s + ".*" + s+".*" ,string))
        System.out.println(s);
    

其中.代表任意字符,当然也可以包含s。*表示0个或多个。.*连起来就是任意多个任意字符的意思。然后拼接字符串表示s至少出现3次,前后、中间可以是任意字符,也可以什么都没有。

追问

我要的是连续出现3次的字符,亲~你的正则表达式只能打印总共出现3次的字符~

追答

。。。。题目看错了-_-!

if判断替换成

Pattern.matches(".*" + s+ s + s+".*" ,string)

也可以用

string.indexOf(s+s+s)!=-1

本回答被提问者和网友采纳

2022-11-25:连续出现的数字。编写一个 SQL 查询,查找所有至少连续出现三次的数字。 答案是输出1,原因是1是唯一连续出现三次的数字。 DROP TABLE IF EXISTS logs;

2022-11-25:连续出现的数字。编写一个 SQL 查询,查找所有至少连续出现三次的数字。
答案是输出1,原因是1是唯一连续出现三次的数字。

DROP TABLE IF EXISTS logs;
CREATE TABLE logs (
  id int(11) NOT NULL,
  num int(11) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO logs VALUES ('1', '1');
INSERT INTO logs VALUES ('2', '1');
INSERT INTO logs VALUES ('3', '1');
INSERT INTO logs VALUES ('4', '2');
INSERT INTO logs VALUES ('5', '1');
INSERT INTO logs VALUES ('6', '2');
INSERT INTO logs VALUES ('7', '2');

答案2022-11-25:

sql语句如下:

SELECT DISTINCT
    l1.num AS ConsecutiveNums
FROM
    logs l1,
    logs l2,
    logs l3
WHERE
    l1.id = l2.id - 1
    AND l2.id = l3.id - 1
    AND l1.num = l2.num
    AND l2.num = l3.num

执行结果如下:

以上是关于用java编写一个字符串的程序,找出连续出现三次的字符的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode--SQL 查询:查找所有至少连续出现三次的数字。

180. 连续出现的数字

Lc180-连续出现的数字

sql 180. 连续出现的数字

[LeetCode]刷题---连续出现的数字

SQL查找连续出现的数字