最少操作次数的简易版

int getMinOperationNum(string a, string b) {
	int len = a.length();
	int curA = len - 1, prevA = len - 1;
	int curB = len - 1, prevB = len - 1;

	int result = 0;
	while (curA >= 0) {
		if (a[curA] == b[curB]) {
			/*(curB-curA)-(prevB-prevA)	//指定字符还需移动距离
			 * curB-curA : 字符在移动后的位置与在原字符串中位置的距离,
			 * prevB-prevA: 当前字符已经移动的距离*/
			result += prevA - curA - (prevB - curB);
			prevA = curA;
			prevB = curB;
			curA--;
			curB--;
		} else {
			curA--;
		}
	}
	//特殊情况 abcd,acbd
	result += prevA;
	return result;
}

你可能感兴趣的:(算法-树)