# 14. Longest Common Prefix
### 題目: 最長公共前綴
給你一個字符串數組 strs,找出其中所有字符串的最長公共前綴。如果不存在公共前綴,返回空字符串 ""。
---
### 範例1:
```
輸入: strs = ["flower", "flow", "flight"]
輸出: "fl"
解釋: 所有字符串的最長公共前綴是 "fl"。
```
### 範例2:
```
輸入: strs = ["dog", "racecar", "car"]
輸出: ""
解釋: 輸入中的字符串沒有公共前綴,所以結果為空字符串 ""。
```
---
### 提示
* 前綴概念:你需要找出所有字符串中都存在的最長前綴。從第一个字符串的前缀开始,逐步缩短前缀长度,直到找到一个所有字符串的公共前缀。
* 逐步比較:逐個比較字符串的前綴,從第一个字符串的前缀开始,與其他字符串的前缀進行比對。當發現不匹配時,縮短前缀長度。
* 退出條件:當最長前缀變為空字符串時,表示沒有公共前缀,應立即返回空字符串。
---
### 解答
我的版本:
```
public class Solution {
public string LongestCommonPrefix(string[] strs) {
string prefix = strs[0];
for(int i = 1; i < strs.Length; i++){
while(strs[i].IndexOf(prefix) != 0){
prefix = prefix.Substring(0, prefix.Length - 1);
}
if(prefix.Length == 0){
return "";
}
}
return prefix;
}
}
```
[leetcode的大神](https://leetcode.com/problems/longest-common-prefix/solutions/4711312/simple-and-easy-solution-in-java-python-c-c/)
```
public class Solution {
// Intuition: The idea is to iterate through each character position in the first string
// and compare it with the corresponding characters in the other strings.
// Approach: Use nested loops to iterate through characters in the first string
// and compare with the corresponding characters in the rest of the strings.
// If a mismatch is found or if the index goes beyond the length of any string, return the current prefix.
public string LongestCommonPrefix(string[] strs) {
// Initialize an empty string to store the longest common prefix.
string s = "";
// Iterate through each character position in the first string (strs[0]).
for (int i = 0; i < strs[0].Length; i++) {
// Iterate through the other strings starting from index 1.
for (int j = 1; j < strs.Length; j++) {
// Check if the current index i is out of bounds for the current string (strs[j])
// or if the characters at position i are different between strs[j] and strs[0].
if (i >= strs[j].Length || strs[j][i] != strs[0][i]) {
// Return the current prefix as the result.
return s;
}
}
// Append the current character to the common prefix.
s += strs[0][i];
}
// Return the final common prefix.
return s;
}
}
```