C++:数组中两个字符串的最小距离

题目:

数组中两个字符串的最小距离__牛客网 (nowcoder.com)


解题思路:

  • 模拟+贪心

 以下为例

输入:

5

QWER 666

QWER

1234

qwe

666

QWER

输出:

1

        用prev1来记录QWER的位置,用prev2来记录666的位置。用 i 来遍历一遍输入数据,一旦遇到QWER就判断prev2是否为 -1,然后计算它们直接的距离,并且修改prev1 = i ,遇到666同理。


代码实现:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int n,prev1 = -1, prev2 = -1;
    int ret = 100001;
    string s1,s2;
    string s;
    cin >> n>> s1 >> s2;

    for(int i = 0; i < n; i++)
    {
        cin >> s;
        if(s == s1)
        {
            if(prev2 != -1)
            {
                ret = min(ret, i - prev2);
            }
            prev1 = i;
        }
        else if (s == s2) 
        {
            if(prev1 != -1)
            {
                ret = min(ret, i - prev1);
            }
            prev2 = i;
        }
    }

    if(ret == 100001)
        cout << -1;
    else
        cout << ret;

    return 0;
}
上一篇:FLStudio21Mac版flstudio v21.2.1.3430简体中文版下载(含Win/Mac)


下一篇:建筑资质应该怎么选?