计算字符串的距离(HJ52)

Posted repinkply

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算字符串的距离(HJ52)相关的知识,希望对你有一定的参考价值。

一:解题思路

这道题目和leetcode72题,基本上是一样的,可以放在一起进行学习。

二:完整代码示例 (C++版和Java版)

C++:

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;


int min3(int a, int b, int c)
{
        return min(a,min(b,c));
}

int minDistance(string word1, string word2) 
{
    if (word1.size() == 0 && word2.size() == 0) return 0;
    int m = word1.size() + 1;
    int n = word2.size() + 1;

    vector<vector<int>> d(m,vector<int>(n,0));

    for (int j = 0; j < n; j++)
        d[0][j] = j;
    for (int i = 0; i < m; i++)
        d[i][0] = i;

    for (int i = 1; i < m; i++)
    {
        for (int j = 1; j < n; j++)
        {
            if (word1[i - 1] == word2[j - 1]) d[i][j] = d[i-1][j-1];
            else
            {
                d[i][j] = min3(d[i-1][j-1],d[i-1][j],d[i][j-1])+1;
            }
        }
    }

    return d[m-1][n-1];
}

int main()
{
    string s1 = "";
    string s2 = "";

    while (cin >> s1 >> s2)
    {
        cout << minDistance(s1,s2) << endl;
    }

    return 0;
}

 

以上是关于计算字符串的距离(HJ52)的主要内容,如果未能解决你的问题,请参考以下文章

华为机试题 HJ2计算某字符出现次数

华为机试题 HJ1 字符串最后一个单词的长度

华为机试HJ75:公共子串计算

华为机试题 HJ73计算日期到天数转换

华为机试题 HJ73计算日期到天数转换

华为机试HJ2:计算某字母出现次数