无重复字符的最长子串
要求:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
这题主要使用到了滑动窗口的方法,使用的到无序集的容器类型;
C++ 解法:
int LengthOfLongestSubstring(string s) {
//充当窗口的无序集 unordered_set<char> g_csetTemp; //记录窗口最右边元素在字符串中的下标 int g_iIndex = 0; //最长子串的长度 int g_iMax = 0; //将所有元素放入窗口中 for (int i = 0; i < s.size(); i++) {
//窗口中如果有重复元素,将最早加入(窗口最左边)的重复元素删除 while (g_csetTemp.find(s[i]) != g_csetTemp.end()) {
//删除操作 g_csetTemp.erase(s[g_iIndex]); g_iIndex = g_iIndex + 1; } //将新的元素的插入无序表 g_csetTemp.insert(s[i]); //获得子串最大长度 if (g_csetTemp.size() > g_iMax) {
g_iMax = g_csetTemp.size(); } } return g_iMax; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229276.html原文链接:https://javaforall.net
