题目:
解题思路:
这个题让找一个字符串中具有不重复单词的最长子串的长度,如:ababc,子串为abc,长度为3。有这么几个方法:
方法一:
依赖字符串本身的一些特有函数,进行相应操作来完成。我们可以维护一个子串,来保存最长的无重复的子串,并记录当前子串的长度,如果遇到重复的字符,则去掉子串中重复的字符,一次进行下去,最终就能找到最长无重复子串。如str = ababc, substr = a, ab, ba, ab, abc....类似这样的思路。如下代码:
方法二:
指针法:用一个指针指向字符串的左边界,如果遇到重复的字符,就往后移动,同时用一个有26位的字符数组(因为总共就26个字符)来保存每一个字符最近一次出现的位置,以此来更新指针位置和字符位置之间的距离,就可以算出最长无重复字符的长度,如下代码所示:
方法三:
hashtable法:该方法和方法二其实是同一个思路,只不过该方法我不用数组来存字符的位置,而是通过hashtable来存,进而提高效率。如下代码: