题目:计算字符串的相似度
描述 | |
---|---|
知识点 | 栈 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入两个字符串 |
输出 | 输出相似度,string类型 |
样例输入 | abcdef abcdefg |
样例输出 | 1/2 |
#include <iostream>
#include <string>
#define Max(a,b) (a)>(b)?(a):(b)
using namespace std;
int table[100][100] = { 0 };
string calculateStringDistance(string expressionA, string expressionB)
{
int lenA = expressionA.length();
int lenB = expressionB.length();
for (int i = 1; i <= lenA; i++)
{
for (int j = 1; j <= lenB; j++)
{
if (expressionA[i] == expressionB[j])
{
table[i][j] = table[i - 1][j - 1] + 1;
}
else
{
table[i][j] = Max(table[i - 1][j], table[i][j - 1]);
}
}
}
int maxCommonSerial = table[lenA][lenB];
int distance = Max(lenA, lenB) - maxCommonSerial;
char ch[10];
sprintf_s(ch, "1/%d", distance + 1);
string str(ch);
return str;
}
int main(void)
{
string strA, strB;
cin >> strA >> strB;
cout << calculateStringDistance(strA, strB);
return 0;
}