您的位置:首页 > 其它

LCS最长公共子序列的另一种解决方法

2017-03-30 17:32 323 查看
算法描述:将字符串中的字符转化为数组下标,先将一个字符串作为下标存入数组,下标对应位置初始化为字符 ‘1’。然后将另一个字符串扫描一遍,把它每个字符也作为数组下标,下标位置内容加一,变为字符‘2’然后统计数组中大于‘1’的个数就是最大子串长度。

public class LCS{

public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "ABCBDAB";
String str2 = "BDCABA";

char[] chars= new char[122];

for (int i = 0; i < str1.length(); i++) {
chars[(int)str1.charAt(i)] = '1';
}

for (int i = 0; i < str2.length(); i++) {
if (chars[(int)str1.charAt(i)] != ' ') {
chars[(int)str1.charAt(i)] = (char) (chars[(int)str1.charAt(i)] +1);
}
}
int count=0;
for (int i = 0; i <  chars.length; i++) {
if (chars[i]>='2') {
count++;
System.out.print((char)(i));
}
}
System.out.println();
System.out.println(count);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: