讨论/算法和数据结构/题库第14题,有大哥来帮帮忙的,实在是没招了/
题库第14题,有大哥来帮帮忙的,实在是没招了

下面是错误信息,这个例子我在eclipse上可以运行成功,到leetcode上就不行了

image.png

在leetcode的Playground中又出现下面的错误,然后我就懵了

image.png

这是代码

class Solution {
    public String longestCommonPrefix(String[] strs) {
        //定义公共部分
		String tempString = "";
		boolean flag = true;
		
		//判断字符数组为空和数组中的字符串为空,都会导致越界问题
		if(strs.length == 0 || strs[0] == ""){
			return tempString ;		
		}
        
        for(int i = 0 ; i < strs.length; i++){
            if(strs[i] == "")
            return tempString ;
        }
		
		for (int i = 0; flag ; i++) { //这里要考虑如果相同前缀很长的情况
			
			 //临时变量固定需要比较的字符串
			 tempString = strs[0].substring(0, i+1);
			 
			 //拿临时变量逐一比较后面的每一个字符串
			 for (int j = 1; j < strs.length; j++) {
				//判断字符是否相同 
				 
				if(!(tempString.equals(strs[j].substring(0, i+1)))){
					flag = false;
					break;
				}
			}
			 
			 //判断是否比较失败
			 if(!flag){
				 //防止数组越界
				 if(i == 0){
					 tempString = "";
				  //判断失败,将tempString重新赋值
				 }else{
					 tempString = strs[0].substring(0, i);
					 break;//记着加break跳出外层循环
				 }
			 }
		}
		return tempString;
    }
}
展开讨论

你直接比一下第一个字符是否都相同,第二个字符是否都相同,一直到这些字符中长度最短的那个字符是否相同就可以了。中间只要有一个字符不相同就直接输出这时的长度。

另外,如果实在写不出来可以看看题解,没必要死磕,看看别人的思路,自己再尝试着改一下代码,记好笔记就行了。

展开全部 4 讨论