1

题目详情

Given a string, find the length of the longest substring without repeating characters.

题目要求输入一个字符串,我们要找出其中不含重复字符的最长子字符串,返回这个最长子字符串的长度。

Examples:
输入"abcabcbb",最长不含重复字符子字符串"abc",返回3.
输入"bbbbb",最长不含重复字符子字符串"b",返回1.
输入"pwwkew",最长不含重复字符子字符串"wke",返回3.

想法

  • 这道题的思路也比较简单,首先声明一个max变量存储结果,声明一个temp字符串暂存当前的不重复字符串。
  • 对于字符串中的每一个字符c,先判断temp中是否已经存在这个字符,如果不存在,直接将c添加到temp,如果已存在,则新的temp字符串就从不含前一个c字符的地方开始。
  • 每次截取字符串之前都判断一下长度是否比max大。

解法

    public int lengthOfLongestSubstring(String s) {
        int max = 0;
        String temp = "";
        
        for(char c : s.toCharArray()){
            int index = temp.indexOf(c);
            if(index < 0) temp += c;
            else{
                max = (temp.length() > max) ? temp.length() : max ;
                temp = temp.substring(index+1);
                temp += c;
            }
        }
        max = (temp.length() > max) ? temp.length() : max;
        return max;
    }

soleil阿璐
350 声望45 粉丝

stay real ~