输入一个字符串,找出其中不含有重复字符的最长子串的长度。

网友投稿 596 2022-11-10

输入一个字符串,找出其中不含有重复字符的最长子串的长度。

输入一个字符串,找出其中不含有重复字符的最长子串的长度。

用到的方法: 1、charAt() 方法可返回指定位置的字符。 提示和注释 注释:字符串中第一个字符的下标是 0。如果参数 index 不在 0 与 string.length 之间,该方法将返回一个空字符串。

2、java.lang.String.contains()方法返回true,当且仅当此字符串包含指定的char值序列

3、math.max(a, b ,c, d,…)返回最大的那个数字,其中比较的参数可以任意个

输入一个字符串,找出其中不含有重复字符的最长子串的长度。 例:aabbccdd ab是子串、abcd是子序列

package com.zheng.demo7;import java.util.HashSet;import java.util.Scanner;class Solution { public static void main(String[] args) { Solution solution = new Solution(); System.out.println("请输入字符串:"); Scanner in = new Scanner(System.in); String str = in.nextLine(); System.out.println("输入的字符不重复最大个数:" + solution.lengthOfLongestSubstring(str)); } public int lengthOfLongestSubstring(String s) { int ans = 0; int rk = -1; HashSet hash = new HashSet();//保存字符 for (int i = 0; i < s.length(); i++) { //每一次循环,都从下一位开始 if (i != 0) { hash.remove(s.charAt(i - 1));//每遍历一次,都将起始位置后移,此时先前保存的元素必定丢弃 } while (rk + 1 < s.length() && !hash.contains(s.charAt(rk + 1))) {//下移的元素在集合中不存在 hash.add(s.charAt(rk + 1)); rk++; } ans = Math.max(ans, rk - i + 1);//比较改变初始位置后的哪个不重复数据最多 } return ans; }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ZOJ 1985 Largest Rectangle in a Histogram
下一篇:Maven中利用assembly插件打包jar包
相关文章

 发表评论

暂时没有评论,来抢沙发吧~