一道面试题当时想到有一种最優的解法,可怎么也想不出来了现在回顾了一下:
就是求出一个给定字符串的最长不重复子串不重复子串的最大长度值是多少。
例如:給定的字符串为"abcdafg",其最长不重复子串的不重复子串的长度为:6即":bcdafg"。
一道面试题当时想到有一种最優的解法,可怎么也想不出来了现在回顾了一下:
就是求出一个给定字符串的最长不重复子串不重复子串的最大长度值是多少。
例如:給定的字符串为"abcdafg",其最长不重复子串的不重复子串的长度为:6即":bcdafg"。
从一个字符串中找到一个连续子串该子串中任何两个字符不能相同,求子串的最大长度并输出一条最长不重复子串不重复子串
利用hash表hashTable[256]来保存出现过的字符,然后从头開始遍历字符串
1、如果当前字符ch已经出现过(hashTable[ch]==1),则表示一个局部最长不重复子串不重复子串已经出现:
此时判断该子串长度len是否大于mlen如果是,则更新mlen以及最长不重复子串子串的起始位置mstart。
同时将start到重复字符ch之间的hash表重置为0(表示没有出现过)相应的长度len也减小,嘫后从ch的下个字符作为新的子串的开始;
2、如果当前字符ch没有出现过:
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。