LeetCode-14 最长公共前缀
生活随笔
收集整理的這篇文章主要介紹了
LeetCode-14 最长公共前缀
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 題目描述
- 我的解法
- 反思1
- 優(yōu)化1
- 反思2
- 優(yōu)化2
- 其他思路
- 總結(jié)
- Github
題目描述
編寫一個(gè)函數(shù)來查找字符串?dāng)?shù)組中的最長公共前綴。
如果不存在公共前綴,返回空字符串 “”。
示例 1:
輸入: [“flower”,“flow”,“flight”]
輸出: “fl”
示例 2:
輸入: [“dog”,“racecar”,“car”]
輸出: “”
解釋: 輸入不存在公共前綴。
說明:
所有輸入只包含小寫字母 a-z 。
我的解法
public String longestCommonPrefix(String[] strs) {//特殊情況if(null == strs||0 == strs.length)//字符數(shù)組為空的情況return "";if(1 == strs.length)//數(shù)組中只有一個(gè)字符串,那么前綴就是他本身return strs[0];boolean finalRound = false;boolean isPlusIndex = true;int index = 0;while(!finalRound){for(int i=1; i<strs.length; i++){if(index > strs[i-1].length() ||index > strs[i].length()){//如果超出某個(gè)字符串長度了,終止//這個(gè)也同時(shí)校驗(yàn)了某一個(gè)字符串為空的情況finalRound = true;isPlusIndex = false;break;}if(strs[i-1].substring(0,index).equals(strs[i].substring(0,index))) {} else{//如果前綴不相等了,終止finalRound = true;isPlusIndex = false;break;}}if(isPlusIndex)index++;}return strs[0].substring(0,index-1);//因?yàn)槲野炎铋_始假設(shè)多了一位“”,所以實(shí)際的索引要減去一}用間:9ms
戰(zhàn)勝:77.55%
反思1
優(yōu)化1
public String longestCommonPrefix3(String[] strs) {if(strs.length == 0) return "";String prefix = strs[0];for (int i = 0; i <= strs.length - 1; i++){while(!strs[i].startsWith(prefix)){prefix = prefix.substring(0,prefix.length()-1);}}return prefix;}用時(shí):9ms
戰(zhàn)勝:77.55%
==! 在我的電腦上并沒有看出太大的差距
反思2
優(yōu)化2
public String longestCommonPrefix4(String[] strs) {if(strs.length == 0 || strs[0].length() == 0) return "";String prefix = strs[0];for (int i = 1; i <= strs.length - 1; i++){if(!"".equals(prefix)){while(!strs[i].startsWith(prefix)){prefix = prefix.substring(0,prefix.length()-1);}}}return prefix;}用時(shí):6ms
戰(zhàn)勝:98.61%
其他思路
我比較喜歡這優(yōu)化的版本,雖然leetcode上有更快的版本(并沒有覺得有什么可圈可點(diǎn)的地方,跑出了4ms估計(jì)是網(wǎng)絡(luò)電腦的原因,我本機(jī)還是跑了9ms)。但是少量的代碼更加意味著思路的清晰。有時(shí)候這才是更重要的。
總結(jié)
有的時(shí)候找前面相似的問題,從末位排除是更好的辦法。
Github
LeetCode刷題筆記
總結(jié)
以上是生活随笔為你收集整理的LeetCode-14 最长公共前缀的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode-38 报数
- 下一篇: QQ HD有什么用(QQ官方下载)