(公共前缀)编写返回两个字符串的公共前缀的方法
翻译:
编写返回两个字符串的公共前缀的方法。
例如,“distance”和“disinfection”的公共前缀是“dis”。
方法的标题如下:
public static String prefix(String s1,String s2)
两个字符串没有公共前缀,则该方法返回一个空串。
编写一个主方法,提示用户输入两个字符串并显示他们共同的前缀。
代码:
import java.util.Scanner;
public class CommenStr {
public static String prefix (String s1,String s2) {
//获得两串的长度
int len1 = s1.length();
int len2 = s2.length();
//原串串为空
if(len1 <= 0 ||len2 <= 0) {
return "NULL";
}
//count用来统计公共前缀个数
int count = 0,
n = 0;
//取最短串的长度,最复杂为短串整体为长串的前缀
if(len1 > len2){
n = len2;
}
else {
n = len1;
}
//循环比较
for(int i = 0; i < n; i++) {
if(s1.charAt(i) == s2.charAt(i)) {
//若相同则加1
count++;
}
else {
//因为获得的是前缀,只要有一个不同跳出循环
break;
}
}
//经过比较无公共前缀
if(count == 0) {
return "NULL";
}
//substring(i,j) 输出该串从i下标到j下标的子串
return s1.substring(0,count);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//输入提示
System.out.println("Please input String s1:");
//获取串1
String s1 = input.nextLine();
//输入提示
System.out.println("Please input String s2:");
//获取串2
String s2 = input.nextLine();
//调用方法
String temp = prefix(s1,s2);
//输出
System.out.println("The commen prefix is "+ temp);
}
}
运行结果:
正常
异常
(1)
(2)