日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode-14-最长公共前缀

發布時間:2024/9/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode-14-最长公共前缀 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題:

?

?

解:

請注意,該問題是查找最長公共前綴

一、水平掃描法

package com.example.demo;public class Test14 {/*** 查找字符串數組中最長的公共**前綴**** @param strs* @return*/public String longestCommonPrefix(String[] strs) {//水平掃描法if (strs == null || strs.length == 0) {return "";}String prefix = strs[0];for (int i = 1; i < strs.length; i++) {// 因為查找的各個字符串的前綴,所以A字符串在B字符串中的開頭,不是開頭的話,prefix--,重新查詢,制動為空時結束while (strs[i].indexOf(prefix) != 0) {prefix = prefix.substring(0, prefix.length() - 1);if (prefix.isEmpty()) {return "";}}}return prefix;}public static void main(String[] args) {Test14 t = new Test14();String[] strings = {"abcd", "abc", "ab"};String s = t.longestCommonPrefix(strings);System.out.println(s);} }

?

二、分支法

package com.example.demo;public class Test14 {/*** 查找字符串數組中最長的公共**前綴**** @return*/public String longestCommonPrefix1(String[] strs) {//分治法if (strs == null || strs.length == 0) {return "";}return longestCommonPrefix1(strs, 0, strs.length - 1);}/*** 遞歸、分治** @param strs* @param left* @param right* @return*/private String longestCommonPrefix1(String[] strs, int left, int right) {// 遞歸終止條件if (left == right) {// 遞歸的終止條件要選擇好return strs[left];} else {int mid = (left + right) / 2;// 遞歸的思想(不要深入想遞歸內部,只要在宏觀上認為,該遞歸返回的字符串就是left到mid之間的最長公共前綴)String lcpLeft = longestCommonPrefix1(strs, left, mid);String lcpRight = longestCommonPrefix1(strs, mid + 1, right);//將返回的左右兩個最長公共子串進行比較,獲取最終的最長公共前綴return comparePreFix(lcpLeft, lcpRight);}}/*** 比較兩個字符串中的最長前綴** @param lcpLeft* @param lcpRight* @return*/private String comparePreFix(String lcpLeft, String lcpRight) {int len = Math.min(lcpLeft.length(), lcpRight.length());for (int i = 0; i < len; i++) {if (lcpLeft.charAt(i) != lcpRight.charAt(i)) {return lcpLeft.substring(0, i);}}return lcpLeft.substring(0, len);}public static void main(String[] args) {Test14 t = new Test14();String[] strings = {"abcd", "abc", "ab"};String s = t.longestCommonPrefix1(strings);System.out.println(s);} }

?

總結

以上是生活随笔為你收集整理的leetcode-14-最长公共前缀的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。