当前位置:   article > 正文

每日一题leetcode:无重复字符的最长子串(哈希表)_无重复字符的最长子串hash表 kotlin

无重复字符的最长子串hash表 kotlin

思路:设定i跟j一个跟踪前面一个跟踪后面,设定哈希函数unordered_map,通过map的find函数,如果在s[j]的时候在i到j-1的区间内存在相同的字符了,那就把i的位置更新到存在相同字符位置的下一位,以保证区间内所有的字符都没有重复的。如果没有重复的就让j++

注意:用到unordered_map

参考代码:

  1. class Solution {
  2. public:
  3. int lengthOfLongestSubstring(string s) {
  4. unordered_map<char,int> mp;
  5. int i=0,j=0,ans=0;
  6. while(j<s.length()){
  7. if(mp.find(s[j])!=mp.end()&&i<=mp[s[j]]){
  8. i=mp[s[j]]+1;
  9. }
  10. if(j-i+1>ans)
  11. ans=j-i+1;
  12. mp[s[j]]=j;
  13. j++;
  14. }
  15. return ans;
  16. }
  17. };

注意:map的find函数,如果找到关键字等于val的元素,返回其迭代器,如果找不到,返回end()。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/317754
推荐阅读
相关标签
  

闽ICP备14008679号