#include "List.h" #include <string> #include <stdlib.h> using namespace std; #define max(a, b) (a) > (b) ? (a) : (b) // LeetCode, Longest Substring Without Repeating Characters class Solution { public: int lengthOfLongestSubstring(string s) { const int ASCII_MAX = 255; int last[ASCII_MAX]; int start = 0; int len = s.size(); fill(last, last + ASCII_MAX, -1); int max_len = 0; for (int i = 0; i < len; i++) { if (last[s[i]] >= start) { max_len = max(i - start, max_len); start = last[s[i]] + 1; } last[s[i]] = i; } return max((int)len - start, max_len); } }; int main() { // ListSolution s; // ListNode* pHead = nullptr; // // s.AddToTail(&pHead, 1); // s.AddToTail(&pHead, 2); // s.AddToTail(&pHead, 3); // s.AddToTail(&pHead, 4); // s.AddToTail(&pHead, 5); // s.AddToTail(&pHead, 6); // s.Print(pHead); // s.RemoveNode(&pHead, 3); // s.RemoveNode(&pHead, 1); // s.RemoveNode(&pHead, 2); // s.Print(pHead); // s.RemoveAll(&pHead); // // s.AddToTail(nullptr, 1); // s.Print(nullptr); // s.RemoveNode(nullptr, 1); // s.RemoveAll(nullptr); // // if (nullptr == pHead) // { // printf("pHead == nullptr\n"); // } string str = "qpxrjxkltzyx"; Solution s; int n = s.lengthOfLongestSubstring(str); printf("max_len: %d\n", n); return 0; }