题目:力扣https://leetcode-cn.com/problems/longest-common-prefix/
class Solution {
public String longestCommonPrefix(String[] strs) {
StringBuilder ans = new StringBuilder();
int flag = 1;
for(int i=0;i<strs[0].length();i++){
for(int j=0;j<strs.length;j++){
try{
if(strs[0].charAt(i)!=strs[j].charAt(i)){
flag = 0;
}
}catch(Exception e){
flag = 0;
}
}
if(flag==1){
ans.append(strs[0].charAt(i));
}else{
break;
}
}
return ans.toString();
}
}
思路:取第一串的字符与其他几串的字符进行对比,若对比成功,则将该字符通过StringBuilder对象存储,直至对比失败结束循环。将StringBuilder对象转化为String然后返回即可。
1.声明变量。StringBuilder类型的对象ans用于存储公共前缀的,int类型的对象flag是用于标记状态的,当flag为1时表示匹配成功,当flag为0时表示匹配失败。
StringBuilder ans = new StringBuilder();
int flag = 1;
2.循环对比。将每一串字符与第一串的字符对比,若对比成功则对比下一个字母,直至对比失败。第4行代码中可能出现越界的错误,此处我直接用try{}catch{}的方法直接捕获错误。令flag为0的两种情况有:两字母不相等,数组越界。若匹配成功,flag仍然为1,那就需要通过append()的方法添加公共前缀的字符;反之,则结束循环。
for(int i=0;i<strs[0].length();i++){
for(int j=0;j<strs.length;j++){
try{
if(strs[0].charAt(i)!=strs[j].charAt(i)){
flag = 0;
}
}catch(Exception e){
flag = 0;
}
}
if(flag==1){
ans.append(strs[0].charAt(i));
}else{
break;
}
}
3.将ans转化为String类型返回即可。
return ans.toString();