Leetcode代碼練習(二)

来源:https://www.cnblogs.com/menmenbule/archive/2018/03/06/8516931.html
-Advertisement-
Play Games

首先,沒有第二題,沒有第二題的原因是,JavaScript中根本就沒有那種數據結構,儘管我在playground裡面調試出了正確的結果,但是也許是因為數據結構問題,最終沒能讓我通過。 所以我就拋棄第二題了。 Given a string, find the length of the longest ...


首先,沒有第二題,沒有第二題的原因是,JavaScript中根本就沒有那種數據結構,儘管我在playground裡面調試出了正確的結果,但是也許是因為數據結構問題,最終沒能讓我通過。

所以我就拋棄第二題了。

 

 

Given a string, find the length of the longest substring without repeating characters.

給定一個字元串,找出不含有重覆字元的 最長子串 的長度。

 

 

例如:

Given "abcabcbb", the answer is "abc", which the length is 3.

給定 "abcabcbb" ,沒有重覆字元的最長子串是 "abc" ,那麼長度就是3。

Given "bbbbb", the answer is "b", with the length of 1.

給定 "bbbbb" ,最長的子串就是 "b" ,長度是1。

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

給定 "pwwkew" ,最長子串是 "wke" ,長度是3。請註意答案必須是一個子串,"pwke" 是 子序列 而不是子串。

 

 

題目裡面有幾個點需要註意,首先就是沒有重覆字元,一開始我沒看到,吃了好大的虧。然後就是找到的這個字元串得是給定字元串的子串。

下麵貼出代碼,然後分析一下代碼:

 1 var lengthOfLongestSubstring = function(s) {
 2     var i, j;
 3     var len = s.length;
 4     var compareNumber = 0;
 5     for (i = 0; i < len - 1; i++) {
 6         for (j = i + 1; j < len; j++) {
 7             if (s[i] === s[j]) {
 8                 compareNumber = s.slice(i, j).length > compareNumber ? s.slice(i, j).length : compareNumber;
 9                 break;
10             }
11         }
12     }
13     if (compareNumber === 0) {
14         compareNumber = len;
15     }
16     return compareNumber;
17 };

這題不難,關鍵判斷條件是遇到第一個相同的字母,則停下。然後判斷新找到子串的長度與之前的最長長度哪一個長,然後令compareNumber等於更長的那個長度。

同時,在取得更長長度之後,退出本輪迴圈,進行下一輪迴圈。防止出現字元重覆的情況。

最後加了一個if語句,單獨判斷一次輸入字元串為空的情況。

總的來說,只能算是一種行之有效,略微粗暴的方式,並不是本題的最優解。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Android的EditText通過setOnEditorActionListener給文本編輯框設置監聽事件,但是在其處理方法onEditorAction中的邏輯在每次回車後都觸發了兩次,原來是在鍵盤迴車的ACTION_UP和ACTION_DOWN時都會觸發這個方法,因此修改代碼如下,就防止了兩次 ...
  • 小程式的客服是一個比較強大的功能,可以和用戶進行交流,可以圖文引導用戶打開連接,比如關註公眾號,可以圖文回覆用戶。 需求,不如我有兩個客服按鈕,需要回答不同的自動回覆 客服按鈕A,打開售前客服 客服按鈕B, 打開售後客服 那麼這種情況就需要使用芝麻小客服的帶參數客服 www.xiaokefu.com ...
  • 數據傳遞: 1.通過資料庫進行數據的傳遞 如在fragment中將數據保存在資料庫中,之後其他的fragment或者activity直接讀取資料庫中的數據,資料庫使用還算簡單,這裡就不多說,建議使用litepal,簡單的不要不要的 2.通過Bundle實現兩個fragment的數據傳遞 想必大家看到 ...
  • 第一種報錯(使用的自帶mac命令行) 1、vim ~/.bash_profile ,如果.bash_profile不存在,先touch ~/.bash_profile 2、將如下內容添加到.bash_profile文件中 esc = 輸入wq! = enter 3、source ~/.bash_pr ...
  • 出現這種問題,打開Android monitor的調試信息發現是 android.view.InflateException: Binary XML file line #11: Attempt to invoke virtual method 'boolean。。。 後經過查找,發現: 這裡Vie ...
  • 在高版本的jquery引入prop方法後,什麼時候該用prop?什麼時候用attr?它們兩個之間有什麼區別?這些問題就出現了。 關於它們兩個的區別,網上的答案很多。這裡談談我的心得,我的心得很簡單: 對於HTML元素本身就帶有的固有屬性,在處理時,使用prop方法。 對於HTML元素我們自己自定義的 ...
  • html部分的代碼 css部分代碼 js部分代碼 效果圖如下: 寫地圖巨有用的地址mark: 百度地圖生成器 http://api.map.baidu.com/lbsapi/creatmap/index.html 百度地圖拾取坐標系統 http://api.map.baidu.com/lbsapi/ ...
  • JSONP是什麼?JSON全稱為JSON with Padding,是JSON的一種補充的使用方式,不是官方協議。 使用JSONP伺服器後臺要改動嗎?JSONP不同於一般的ajax請求返回json對象,JSONP返回的是script腳本。所以,使用JSONP時,伺服器後臺需要進行改動,如果依然返回的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...