leetcode1055题,形成字符串的最短路径。
举例 source、target
source存dbca
target是 abcd,那么需要a、bc、d三块板子;
作者有空来写吧,写了些啥,感觉就是普通for+while,并差不多
void dfs(char * source, int slen, char * target, int tlen, int start, int count, int *ret)
{
if (start == tlen) {
if (*ret == -1) {
*ret = count;
}
else {
*ret = *ret < count ? *ret : count;
}
return;
}
int i, flag;
flag = 0;
for (i = 0; i < slen && start < tlen; i++) {
if (target[start] == source[i]) {
start++;
count = (flag == 0) ? (count + 1) : count;
flag = 1;
}
}
if (flag == 0) {
return;
}
dfs(source, slen, target, tlen, start, count, ret);
return;
}
int shortestWay(char * source, char * target) {
int slen, tlen, ret;
slen = strlen(source);
tlen = strlen(target);
ret = -1;
dfs(source, slen, target, tlen, 0, 0, &ret);
return ret;
}