1. 程式人生 > 實用技巧 >Leecode no.14 求最長公共字首

Leecode no.14 求最長公共字首

package com.example.demo.leecode;

import java.util.ArrayDeque;
import java.util.Queue;

/**
* 最長公共字首
* @Date 2020/11/30
* @author Tang
*
* 編寫一個函式來查詢字串陣列中的最長公共字首。
* 如果不存在公共字首,返回空字串 ""。
*/
public class LongestCommonPrefix {

/**
* 把每個字串分割成字元陣列,遍歷
* @param strs
* @return
*/
public String execute(String[] strs){
if(strs == null || strs.length == 0){
return "";
}

Queue<Character> tempQueue = new ArrayDeque();
for (char c: strs[0].toCharArray()) {
tempQueue.add(c);
}

for(int i = 1; i < strs.length; i++){
Queue<Character> queue = new ArrayDeque<>();
if(tempQueue.isEmpty()){
break;
}
for (char c: strs[i].toCharArray()) {
if(tempQueue.isEmpty() || tempQueue.poll() != c){
break;
}
queue.offer(c);
}
tempQueue = queue;
}

char[] newCharArray = new char[tempQueue.size()];
for(int i = 0; i < newCharArray.length; i++){
newCharArray[i] = tempQueue.poll();
}

return String.valueOf(newCharArray);
}

public static void main(String[] args) {
String[] strs = {"abaas","abaa","abaasgf"};
System.out.println(new LongestCommonPrefix().execute(strs));
}

}