国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

每天一題LeetCode[第四天]

2019-11-11 02:18:58
字體:
來源:轉載
供稿:網友

每天一題LeetCode[第四天]


Longest Palindrome Substring

Description:

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example:Input: "babad"Output: "bab"Note: "aba" is also a valid answer.Example:Input: "cbbd"Output: "bb"Subscribe to see which companies asked this question.

解題過程:

題意很簡單,易于理解。關鍵是解題思路。一開始木有解題思路,只有一個窮舉法,具體是,整體循環一次,然后每次判斷當前i與剩下字符串是否有構成Palindrome的。問題,如何查找,就是findPalindrome(i,s.length()-1)反過來查找。但是效率真的不高。

看了TopSolution,才煥然大悟。。因為在相處第一個方法的時候,就一直走錯方向。因為潛意識認為,提高效率的方向,很有可能是每一步的計算直接信息的利用,但是實在想不到,就去看TopSolution了。才發現原來,最開始的思路就錯了,既然是Palindrome,那么有兩種方式來判定 一個字符串到底是不是Palindrome:

前后逼近判定法中間向兩邊的延伸的判定法(分奇數偶數兩種)

而我卻把全部思路都放到了第一種上,所以只能想到第一種解決方式。如果一開始換一個思路,說不定我能想出來。


java代碼:

PRivate int firstIndex,maxLength=0; public String longestPalindrome(String s){ if(null==s || s.length()==0){ return ""; } if(s.length()==1){ return s; } // 一個一個嘗試去查找 --從中間向兩邊查找 for(int i=0;i<s.length()-1;i++){ //奇數Palindrome查找 findPalindrome(s,i,i); //偶數Palindrome查找 findPalindrome(s,i,i+1); } return s.substring(firstIndex,firstIndex+maxLength); } private void findPalindrome(String s,int i,int j){ while (i>=0 && j<s.length()&& s.charAt(i)==s.charAt(j)){ i--; j++; } //這里注意,i,j出來都會多執行一次自減和自增 if(maxLength<j-i-1){ maxLength=j-i-1; firstIndex=i+1; } }

提高代碼質量就是: 積累精美的思路,優質的細節的過程。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜阳市| 涿鹿县| 辽阳市| 西城区| 阿拉善右旗| 新龙县| 普定县| 兴仁县| 诏安县| 彰化市| 伊宁县| 隆昌县| 民乐县| 如东县| 湖南省| 维西| 禄丰县| 彝良县| 沅江市| 岗巴县| 文成县| 河东区| 乐安县| 策勒县| 阿城市| 原平市| 班玛县| 黄山市| 隆子县| 鞍山市| 霞浦县| 吉安县| 隆安县| 平罗县| 惠水县| 五莲县| 常州市| 荔波县| 桓仁| 广昌县| 雷州市|