赞
踩
给定一个字符串,找出其中不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
- import java.util.HashSet;
- import java.util.Scanner;
- import java.util.Set;
-
- public class 无重复子串 {
- public static int lengthOfLongestSubstring(String s) {
- int a = s.length();
- Set<Character> str = new HashSet<>();
- int ans = 0 , i = 0 , j = 0 ;
- while(i < a && j < a){
- if(!str.contains(s.charAt(j))){
- str.add(s.charAt(j++));
- ans = Math.max(ans,j-i);
- }else{
- str.remove(s.charAt(i++));
- }
- }
- return ans;
- }
- public static void main(String[] args) {
- Scanner s = new Scanner(System.in);
- System.out.print("请输入子串: ");
- String str = s.nextLine();
-
- System.out.println("最长子串长度为:" + lengthOfLongestSubstring(str));
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。