zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    面试官:你和队友之间选一个淘汰,你怎么选?
    Spring Boot 如何干掉 if else?
    坑爹的 Java 可变参数,把我整得够惨。。
    厉害了,程序员的高考试卷,你能拿几分?
    6个步骤,全方位掌握 Kafka
    程序员逛酒吧,喝酒不是主要的。。
    图解 Java 垃圾回收机制,写得非常好!
    冲上云霄,Dubbo Go!
    人工智能都能写Java了!这款插件让你编程更轻松
    说了多少遍,姿势要对!
  • 原文地址:https://www.cnblogs.com/sigmod3/p/9777064.html
Copyright © 2011-2022 走看看