【算法】java语言求不定长字符串的最长子串和长度
public class interview6 {
/**
* 用java写一个最长子串,有一个字符串,不定长,比如abcdbafedcabcmonabcd,
* 写一个方法要找出给定字符串的最长子串,最长子串是连续的不重复的字符串,返回长度(7)
*/
@Test
public void test(){
String str="abcdbafedcabcmonabcd";
int left=0;
int maxlength=0;
MapString,Integer substrs=new HashMap();
StringBuilder sb=new StringBuilder();
MapCharacter,Integer map=new HashMap();
for(int right=0;rightstr.length();right++){
char x=str.charAt(right);
if(map.containsKey(x)){
left=Math.max(left,map.get(x)+1);
String s = sb.toString();
substrs.put(s,maxlength);
sb=new StringBuilder(s.substring(s.indexOf(x)+1));
}
map.put(x,right);
sb.append(x);
maxlength=Math.max(maxlength,right+1-left);
}
substrs.put(sb.toString(),maxlength);
System.out.println("最大不重复子串长度为:"+maxlength);
SetString keySet = substrs.keySet();
Iterator iterator=keySet.iterator();
while (iterator.hasNext()){
Object key = iterator.next();
int value=substrs.get(key);
System.out.println(key+"---"+value);
}
}
}
//结果:
// 最大不重复子串长度为:7
// cdb---4
// cdbafe---6
// monabcd---7
// fedcab---6
// abcmon---6
// bafed---6
// bcmona---6
// cmonab---6
// monabc---6
// bafedc---6
// abcd---4
// fedca---6
【算法】java语言求不定长字符串的最长子串和长度 相关文章
java的elasticsearch做高亮显示
public SearchResult search(String keyWord, Integer page) { PageRequest pageRequest = PageRequest.of(page - 1, ROWS); //设置分页参数 SearchQuery searchQuery = new NativeSearchQueryBuilder() .withQuery(QueryBuilders.multiMatchQuery(keyWord,
Java的常见类学习
Java的常见类 一、Scanner 1、使用next()方法: import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 从键盘接收数据 // next方式接收字符串 System.out.println("n
1.Java核心内容
1.集合 2.泛型 3.反射 4.注解 一.数据结构 1.数组 Char[] cs = new Char[]{'G','U','P','A','O'};Char[] cs1 = new Char[5];cs1[0] = 'G';.... 使用数组的时候,注意下标越界 特点: 1.内存地址连续,使用之前必须指定数组的长度 2.可以通过下标访问的方式访问
c语言笔记
c语言 第一个c程序 #include stdio.h/* 头文件 函数声明和类型的定义 *//* 入口函数:有且仅有一个 */int main(void){// 标识符:变量名,函数名,类型名.....// 命名规范:有字母数字下划线组成,数字不开头,区分大小写,避开c关键字printf("早上好!\n"); //
?LeetCode刷题实战172:阶乘后的零
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家聊的问题叫做 阶乘后的零 ,我们先来看题面: https:/
JavaScript节流和防抖
何为防抖 以点击事件为例,如果没有设置防抖,那么你点击了几次,事件就执行几次。这会造成不少问题,例如如果你是一个表单提交的话,因为调用接口提交数据时,会有延时,不会立刻就提交完成。在延时的这段时间里,如果你一直点击提交,就会造成提交了多次的
Java 入门
Day3 2.3 1.注释 1.单行注释 //单行注释 2.多行注释 /*多行注释*/ 3.文档注释 /***文档注释//** 2.关键字 abstract assert for public static int ··· 3.标识符命名规则 java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 1.所有标
注解和枚举回顾
java基础补缺--注解类型和枚举类型 1.注解类型回顾 Annotation,注解(也称为元数据),可以为我们在代码中添加额外的信息,我们也可以很方便的使用这些数据 。 当然,在代码中添加额外信息我们最经常使用的是 注释(comment) ,好的注释对于理解代码或逻辑
十大排序算法之选择排序(2)
2.选择排序 参考选择排序|菜鸟教程 php/** * 基础选择排序 * */function selectionSort($sortData){ $count = count($sortData); $sortCount = 0; for ($i = $count - 1; $i 0; $i--) { $max = $i; for ($j = 0; $j $i; $j++) { $sortCount++; if ($sortData
java 数据库常用工具类
在开发中遇到了如果该表调用次数少有的时候整个项目就会调用一次如果这样我们在去创一个Mapper类当Mapper类越来越多该项目看起来是不是太过于臃肿了。所以封装了该类的来进行常用sql语句的调用和分页等功能。希望各位能多多指教 该方法主要是用来对参数进行