在循环中使用getline()和cin

时间:2018-12-21 15:10:26

标签: c++

我正在尝试解决一个需要两个字符串并且有很多测试用例的问题。考虑到许多测试用例,我已经编写了解决问题的代码。当我只使用一个测试用例时,代码可以正常运行,但是当我输入多个测试用例时,它给出错误的答案

该代码适用于有关hackerearth的问题,如下所示 给定两个字符串a和b(长度可以相同或可以不相同),确定进行a和b字谜所需的最小字符删除数。可以从任何一个字符串中删除任何字符。

输入:

测试用例,t 对于每个测试用例,两个字符串a和b 输出:

所需的O / p

约束:

字符串长度<= 10000

注意:

通过重新排列单词的字母来形成单词的字谜。

例如->对于“ RAM”一词-MAR,ARM,AMR,RMA等是少量的字谜。

这是我在c ++中的代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    //cin.tie(NULL);
    //ios_base::sync_with_stdio(false);
int t;
//cout<<"Enter no of testcases : ";
cin>>t;
//cout<<endl;

for(int k=0;k<t;k++)
{
    string s1;
    string s2;
    cin.ignore();
    //cout<<"Enter first string : ";

    getline(cin,s1);
    //cout<<"Enter second string : ";

    getline(cin,s2);
    int c1[26],c2[26];
    for(int itr='a';itr<'z';itr++)
    {
        c1[itr]=0;
        c2[itr]=0;
    }
    for(int itr=0;itr<s1.length();itr++)
        c1[s1[itr]]++;
    for(int itr=0;itr<s2.length();itr++)
        c2[s2[itr]]++;
    int max=(s1.length()>s2.length()?s1.length():s2.length());
    //cout<<endl<<max;
    int analen=0;
    for(int itr='a';itr<'z';itr++)
    {
            analen+=((c1[itr]<c2[itr])?c1[itr]:c2[itr]);
    }
    //cout<<"length of anagram is: "<<analen<<endl;
    int del=(s1.length()+s2.length())-2*analen;
    cout<</*"Number of characters required to delete to get an anagram is : "<<*/del;
}
return 0;

}

输入: 1个 abc cde

输出: 4

对于上述输入,代码可以完美运行 但 输入: 2 abc cde pqr 第一个

输出: 4 3

正确的输出: 4 4

0 个答案:

没有答案