日期:2014-05-20  浏览次数:20655 次

求教 最小操作数的简易版问题解惑
题目:
给定两个字符串,仅由小写字母组成,它们包含了相同字符。 求把第一个字符串变成第二个字符串的最小操作次数,且每次操作只能对第一个字符串中的某个字符移动到此字符串中的 展开更多介绍 
给定两个字符串,仅由小写字母组成,它们包含了相同字符。 求把第一个字符串变成第二个字符串的最小操作次数,且每次操作只能对第一个字符串中的某个字符移动到此字符串中的开头。 例如给定两个字符串“abcd" "bcad" ,输出:2,因为需要操作2次才能把"abcd"变成“bcad" ,方法是:abcd->cabd->bcad。

最终测试通过的代码如下:
    public static int getNumber(String a, String b){
int step = 0;
int i = a.length() - 1;
int j = b.length() - 1;
while(i >= 0){
if(a.charAt(i) != b.charAt(j)){
++ step;
}else{
-- j;
}
-- i;
}
return step;
}

可是如果 a=“abcd” b=“dcba”,运行结果是3,
abcd->dabc->cdab->bcda->......明显不是3啊

------解决方案--------------------
abcd->bacd->cbad->dcba,怎么不是3?