赞
踩
思路:设定i跟j一个跟踪前面一个跟踪后面,设定哈希函数unordered_map,通过map的find函数,如果在s[j]的时候在i到j-1的区间内存在相同的字符了,那就把i的位置更新到存在相同字符位置的下一位,以保证区间内所有的字符都没有重复的。如果没有重复的就让j++
注意:用到unordered_map
参考代码:
- class Solution {
- public:
- int lengthOfLongestSubstring(string s) {
- unordered_map<char,int> mp;
- int i=0,j=0,ans=0;
- while(j<s.length()){
- if(mp.find(s[j])!=mp.end()&&i<=mp[s[j]]){
- i=mp[s[j]]+1;
- }
- if(j-i+1>ans)
- ans=j-i+1;
- mp[s[j]]=j;
- j++;
- }
- return ans;
- }
- };

注意:map的find函数,如果找到关键字等于val的元素,返回其迭代器,如果找不到,返回end()。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。