• Longest Substring Without Repeating Characters


     1 import java.util.Scanner;
     2 
     3 /**
     4  * Created by qmq
     5  * Given a string, find the length of the longest substring without repeating characters.
     6  * Example 1:
     7  * Input: "abcabcbb"
     8  * Output: 3
     9  * Explanation: The answer is "abc", with the length of 3.
    10  *
    11  * @ 18-10-12
    12  **/
    13 class Solution7 {
    14     public int longestSubstring(String s) {
    15         if (s.length() < 2) {
    16             return s.length();
    17         }
    18         int max = -1, start = 0;
    19         for (int i = 1; i < s.length(); i++) {
    20             if (i < s.length()) {
    21                 int index = s.substring(start, i).indexOf(s.charAt(i));
    22                 if (index != -1) {
    23                     max = Math.max(max, i - start);
    24                     start += (index + 1);
    25                 } else {
    26                     max = Math.max(max, i - start);
    27                 }
    28             }
    29         }
    30         return max != -1 ? max : s.length();
    31     }
    32 }
    33 
    34 public class LongestSubstring {
    35     public static void main(String[] args) {
    36         Solution7 sol = new Solution7();
    37         Scanner scanner = new Scanner(System.in);
    38         String str = scanner.nextLine();
    39         System.out.println(sol.longestSubstring(str));
    40     }
    41 }
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 // Given a string, find the length of the longest substring without repeating characters.
     5 // Example 1 :
     6 // Input : "abcabcbb" Output : 3 Explanation : The answer is "abc",
     7 // with the length of 3.
     8 // the first thought is to round the first situation charactor
     9 
    10 // new hashmap
    11 // hashmap.put(x)
    12 // cnt(x)
    13 // if(x>1)
    14 // cnt the number[xi]
    15 // new hashmap
    16 // continue
    17 // until find
    18 // return the number[xi].max
    19 
    20 class Solution
    21 {
    22   public:
    23     int LongestSubstring(char *s)
    24     {
    25         int len = 0;
    26         char *end = s, *temp;
    27         char *addressTable[128] = {NULL};
    28         while (*end) //非空地址
    29         {
    30             temp = addressTable[*end]; //哈希表
    31             addressTable[*end] = end;  //哈希表end位置初始化
    32             if (temp >= s)             //当前子域大于历史域,则进行域长度更新
    33             {
    34                 len = end - s > len ? end - s : len;
    35                 s = temp + 1;
    36             }
    37             end++;
    38         }
    39         len = end - s > len ? end - s : len; //排除最后一次迭代影响
    40         return len;
    41     }
    42 };
    43 int main()
    44 {
    45     char *str;
    46     cin >> str;
    47     Solution sol;
    48     cout << sol.LongestSubstring(str) << endl;
    49     return 0;
    50 }
  • 相关阅读:
    CppUnit使用指南
    详细分析内存泄露检测
    设计模式之我的理解创建型模式:工厂方法
    MSXML2使用笔记
    【C++】函数指针
    设计模式之我的理解桥模式
    python 使用pyinstaller,pywin32打包.py成.exe应用程序
    python 获取当前时间的用法
    python 使用urllib.urlopen超时问题的解决方法
    python pip的安装流程,以及使用pip更新,卸载第三方模块
  • 原文地址:https://www.cnblogs.com/sigmod3/p/9777064.html
Copyright © 2020-2023  润新知