这道题能算DP吗?那要看是否具备最优子结构。我的分析是没有明显的子结构性质。
例如当求下标为 i 的最长无重复子串时,要考虑两类情况。(len表示当前处理的子串的长度)
(1) s[ i ] 是否在字符串s之前的位置出现过,如果没有则长度 len++ ;
(2) 如果出现过,分两种情况讨论(出现在当前处理的子串中?)
a> 是。那好办,直接更新len = i - [出现位置下标] ;
b> 否。更好办,直接更新 len++。
分析可见,并没有什么最优子结构,DP也谈不上吧。
数据结构:
可采用C++11的unorde