MT35. 字符串距离
描述
输入描述
第一行包含一个字符串 S。输出描述
输出对应的答案。示例1
输入:
aab aba
输出:
2
示例2
输入:
aaabb bab
输出:
5
说明:
在样例 2 中,”aaa”与”bab”的距离为 2,”aab”与”bab”的距离为 1,”abb”与”bab”的距离为 2,C 解法, 执行用时: 3ms, 内存消耗: 484KB, 提交时间: 2019-05-13
#include<stdio.h> #include<string.h> int main() { char s[100000]; char t[100000]; scanf("%s%s",s,t); long long lens=strlen(s); long long lent=strlen(t); long long numa, numb, total, pos; numa=numb=total=pos=0; int i,j; for (i=0; i<lens; ++i) { if (i<lent) { if (t[i] == 'a') numa++; else numb++; } if (s[i] == 'a') total += numb; else total += numa; if (i>=lens - lent) { if (t[pos++] == 'a') numa--; else numb--; } } printf("%lld\n",total); return 0; }
C 解法, 执行用时: 3ms, 内存消耗: 556KB, 提交时间: 2020-08-14
#include<stdio.h> #include<string.h> int main() { char s[100000]; char t[100000]; scanf("%s%s",s,t); long long lens=strlen(s); long long lent=strlen(t); long long numa, numb, total, pos; numa=numb=total=pos=0; int i,j; for (i=0; i<lens; ++i) { if (i<lent) { if (t[i] == 'a') numa++; else numb++; } if (s[i] == 'a') total += numb; else total += numa; if (i>=lens - lent) { if (t[pos++] == 'a') numa--; else numb--; } } printf("%lld\n",total); return 0; }