"class Solution {\npublic:\n int lengthOfLongestSubstring(string s) {\n unordered_set occ;\n int n = s.size(),rk = -1, ans = 0;\n for (int i = 0; i < n; i++) {\n if (i) occ.erase(s[i - 1]);\n while (rk + 1 < n && !occ.count(s[rk + 1])) {\n occ.emplace(s[rk + 1]);\n rk++;\n }\n ans = max(ans, rk - i + 1);\n }\n return ans;\n }\n};//代码1\nclass Solution {\n func lengthOfLongestSubstring(_ s: String) -> Int {\n\t\tvar maxLen = 0\n var beginning = 0\n var map = Dictionary<Character, Int>()\n let chars = Array(s)\n for (terminal, c) in chars.enumerated() {\n if let pos = map[c] {\n beginning = max(beginning, pos)\n }\n map[c] = terminal + 1\n maxLen = max(maxLen, terminal - beginning + 1)\n }\n return maxLen\n }\n}//代码2\n为什么代码2比代码1快内容:代码2比代码1快的原因是代码2使用了字典(Dictionary)来存储字符和对应的索引位置,而代码1使用了无序集合(unordered_set)来存储字符。字典具有更高效的查找和插入操作,因此在代码2中,查找字符和更新索引的操作更快。\n\n另外,代码2还使用了数组来存储字符串的字符,而代码1每次通过索引访问字符串的字符。数组具有连续的内存空间,因此可以更高效地访问元素。\n\n综上所述,代码2在查找和插入操作上更高效,同时使用数组来存储字符串的字符也提高了访问效率,所以比代码1快。\n


原文地址: https://www.cveoy.top/t/topic/p9Wv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录