力扣第三题 : 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

public int longestSubString2(String str)
        {
            char[] strArray =  str.ToArray();
            int n = strArray.Length;
            List list = new List();
            int maxString = 0 , i = 0 , j = 0;

            while (i < n && j < n)
            {
                if (!list.Contains(strArray[j]))
                {
                    list.Add(strArray[j++]);
                    maxString = Math.Max(maxString, j - i);
                }
                else
                {
                    list.Remove(strArray[i++]);
                }
            }
            return maxString;
        }
    public class Solution
    {
        public int longestSubString(String str)
        {
            int startIdx = 0;//开始索引
            int endIdx = 0; //结束索引
            int longest = 0;//最大长度
            //当前字符串长度
            int strLength = str.Length;
            char[] strChar = str.ToArray();
            //无重复集合 判断元素是否存在
            List list = new List();
            //记录无重复字符串
            StringBuilder longestSubStr = new StringBuilder();
            //记录最大无重复字符串
            String maxString = "";
            while (startIdx < strLength && endIdx < strLength)
            {
                if (!list.Contains(strChar[endIdx]))
                {
                    longestSubStr.Append(strChar[endIdx]);
                    //元素不存在加入集合,结束索引向后移动一位
                    list.Add(strChar[endIdx++]);
                    //计算出当前不重复字符串最大长度
                    longest = Math.Max(longest, endIdx - startIdx);

                    if (maxString.Length < longestSubStr.Length)
                    {
                        maxString = longestSubStr.ToString();
                    }
                }
                else
                {
                    //元素存在,删除开始索引的值,开始索引向后移动一位
                    list.Remove(strChar[startIdx++]);
                    longestSubStr.Remove(0, 1);
                }
            }
            return longest;
            //Console.WriteLine("str的最大长度 : " + longest + "最长字符串 : " + maxString);
        }
    }

 

你可能感兴趣的:(面试题学习)