Java 题解 | #牛族寻找祖先#
牛族寻找祖先
https://www.nowcoder.com/practice/eea77a55616f4961801796c7d36369db
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param names string字符串一维数组
* @return string字符串
*/
public String findAncestor (String[] names) {
// write code here
if (names == null || names.length == 0) {
return "";
}
String first = names[0];
int shortestLength = first.length();
// 找到最短的字符串长度
for (String name : names) {
shortestLength = Math.min(shortestLength, name.length());
}
StringBuilder commonPrefix = new StringBuilder();
// 逐个比较字符
for (int i = 0; i < shortestLength; i++) {
char currentChar = first.charAt(i);
for (int j = 1; j < names.length; j++) {
if (names[j].charAt(i) != currentChar) {
return commonPrefix.toString();
}
}
commonPrefix.append(currentChar);
}
return commonPrefix.toString();
}
}
Java编程语言。
该题考察的知识点包括:
- 字符串的基本操作,如获取字符、获取长度等。
- 数组或列表的遍历和管理。
- 循环控制和条件判断。
代码解释:
- 在 findAncestor 方法中,首先检查输入的 names 数组是否为空或长度为0,如果是的话直接返回空字符串。
- 将第一个字符串作为基准字符串,然后找到所有字符串中长度最短的那个字符串,以保证在比较时不会越界。
- 使用一个 StringBuilder 对象 commonPrefix 来保存公共前缀。
- 通过循环遍历字符的位置,获取第一个字符串中当前位置的字符,并将其与其他字符串在相同位置的字符进行比较。
- 如果所有字符串在当前位置的字符都相同,就将该字符添加到 commonPrefix 中。
- 如果有任何一个字符串在当前位置的字符不同,就返回当前的 commonPrefix,表示找到了最长的公共前缀。
- 如果循环结束后没有返回,说明第一个字符串本身就是所有字符串的公共前缀,或者数组中只有一个字符串。
- 将 commonPrefix 转换为字符串并返回作为结果。

凡岛公司福利 319人发布