获取最长不连续重复子字符串:两种方法

例如:

获取字符串“aaabddcccb”中最长不连续重复子字符串:

答案:最长不连续重复子串是“abd”

方法一:效率高,用时1毫秒,第二种方法13毫秒。

复制代码
 1     /**
 2      * 获取最长连续不重复字符
 3      * @param s
 4      * @return
 5      */
 6     public static String getLongestDisContinuousRepeat(String s){
 7         String res="",item="",before="";
 8         char[] ch = s.toCharArray();
 9         for (int i = 0; i < ch.length; i++) {
10             if (before.equals(ch[i]+"")) {
11                 item=ch[i]+"";
12             }else {
13                 item=item+ch[i];
14             }
15             before=ch[i]+"";
16             if (item.length()>res.length()) {
17                 res = item;
18             }
19         }
20         return res;
21     }
复制代码

 

方法一 拼接字符串也可使用StringBuffer

方法二:效率低,用时13毫秒左右,

本人正则表达式新手,用的不好,以后有高效的再修改,勿怪勿怪

复制代码
 1 /**
 2      * 获取最长不连续重复字符
 3      * @param s
 4      * @return
 5      */
 6     public static String getLongestDisContinuousRepeat2(String s){
 7         String res="";
 8         StringBuffer item= new StringBuffer();
 9         char[] ch = s.toCharArray();
10         for (int i = 0; i < ch.length; i++) {
11             item.append(ch[i]+"");
12             if (item.length()>res.length()) {
13                 res = item.toString();
14             }
15             if (item.toString().matches(".*?(\\w)\\1{1,}.*?")) {//正则表达式判断,是否有连续重复字符
16                 item=new StringBuffer(ch[i]+"");
17             }
18         }
19         if (res.matches(".*?(\\w)\\1{1,}.*?")) {//有连续重复的字符
20             return res.substring(0, res.length()-1);//最后一个重复,去除。
21         }else {
22             return res;
23         }
24     }
复制代码

 

本文作者:好Wu赖

本文链接:https://www.cnblogs.com/erlongxizhu-03/articles/10184293.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   好Wu赖  阅读(1138)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起