题解 | #最长不含重复字符的子字符串#
最长不含重复字符的子字符串
https://www.nowcoder.com/practice/48d2ff79b8564c40a50fa79f9d5fa9c7
参考了动态规划的思路
#include <vector> class Solution { private: const int c_num = 128; public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return int整型 */ int lengthOfLongestSubstring(string s) { // write code here if (s.length() < 2) return s.length(); vector<int> last_pos_vec(c_num, -1); vector<int> dp(s.length(), 1); int longest_sub_len = 1; last_pos_vec[s[0]] = 0; for (int pos = 1; pos < s.length(); ++pos) { if (dp[pos - 1] >= pos - last_pos_vec[s[pos]]) dp[pos] = pos - last_pos_vec[s[pos]]; else dp[pos] = dp[pos - 1] + 1; if (dp[pos] > longest_sub_len) longest_sub_len = dp[pos]; last_pos_vec[s[pos]] = pos; } return longest_sub_len; } };