题目原型:
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。
中心思路:
分别求出两个字符串的长度n和m,当 n - m =1 或 m - n =1 时,由于两种情况具有对称性,因此可以定义一个函数统一计算这两种情况。用 longer 表示较长的字符串,shorter 表示较短的字符串,同时遍历两个字符串,比较对应下标处的字符是否相同,如果字符相同则将两个字符串的下标同时加 11,如果字符不同则只将 longer 的下标加 11。遍历过程中如果出现两个字符串的下标之差大于 11 则不符合一次编辑,遍历结束时如果两个字符串的下标之差不大于 11 则符合一次编辑当 m = n时,同时遍历 first 和 second,比较相同下标处的字符是否相同。如果字符不同的下标个数不超过 1,则符合一次编辑或零次编辑。
具体代码如下:
bool oneInsert(const char * shorter, const char * longer) {
int length1 = strlen(shorter), length2 = strlen(longer);
int index1 = 0, index2 = 0;
while (index1 < length1 && ind