【问题标题】:How To complete string from another string [closed]如何从另一个字符串完成字符串[关闭]
【发布时间】:2022-01-19 16:36:41
【问题描述】:
#include<iostream>
#include<string>
using namespace std;
int main ()
{
    string str;
    string str2;
    int count;
    cin>>count;
    while(count!=0)
    {
        cin>>str;
        cin>>str2;
        int l=str2.length()-1;
        cout<<str[0];
        if(str.length()==str2.length())
        {
        for(int x=1;x<str.length();x++)
            cout<<str2[x-1]<<(str[x]);
            cout<<str2[l];
            cout<<endl;
        }
        count--;
    }



    return 0;
}

给定两个字符串 S 和 T。打印一个包含以下内容的新字符串:

字符串 S 的第一个字母后跟字符串 T 的第一个字母。

字符串 S 的第二个字母后跟字符串 T 的第二个字母。

等等……

换句话说,新的字符串应该是( S0 + T0 + S1 + T1 + .... )。 注意:如果 S 的长度大于 T 的长度,则必须在新字符串的末尾添加剩余的 S 字母,反之亦然。

输入

第一行包含一个数字N(1 ≤ N ≤ 50)个测试用例。

以下N行每一行包含两个字符串S, T (1 ≤ |S|, |T| ≤ 50)由大小写英文字母组成。

输出

对于每个测试用例,打印所需的字符串。

例子

inputCopy
2
ipAsu ccsit
ey gpt
outputCopy
icpcAssiut
egypt

在某些情况下我会出错,有人可以告诉我如何解决这个问题

【问题讨论】:

  • 您会很高兴听到您不需要任何人的帮助来解决这个问题,只需一个您已经拥有的工具:您的调试器!这正是调试器的用途。 runs your program, one line at a time, and shows you what's happening,这是每个 C++ 开发人员都必须知道的事情。在调试器的帮助下,您将能够快速找到此程序以及您编写的所有未来程序中的所有问题,而无需向任何人寻求帮助。您是否已经尝试过使用调试器?如果不是,为什么不呢?您的调试器向您展示了什么?
  • 我的建议,学习如何使用调试器,然后你可以一步一步地检查你的代码,并在每一步检查内存的内容,并验证它是否是你认为应该的。跨度>
  • 你为什么要重复添加str2[l];

标签: c++ string algorithm loops for-loop


【解决方案1】:

简单的方法可以如下所示

std::string::size_type i = 0;

for ( auto n = std::min( str.size(), str2.size() ); i < n; i++ )
{
    std::cout << str[i] << str2[i];
}

while ( i < str.size() )
{
    std::cout << str[i++];
}

while ( i < str2.size() )
{
    std::cout << str2[i++];
}    

这是一个演示程序

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

int main()
{
    std::string str( "ipAsu" );
    std::string str2( "ccsit" );

    std::string::size_type i = 0;

    for (auto n = std::min( str.size(), str2.size() ); i < n; i++)
    {
        std::cout << str[i] << str2[i];
    }

    while (i < str.size())
    {
        std::cout << str[i++];
    }

    while (i < str2.size())
    {
        std::cout << str2[i++];
    }

    std::cout << '\n';
}

程序输出是

icpcAssiut

您可以将基本代码移动到一个单独的函数中。

【讨论】:

    【解决方案2】:

    注意上面给出的注释:

    注意:如果 S 的长度大于 T 的长度,则必须在新字符串的末尾添加剩余的 S 字母,反之亦然。

    您的代码在两个相同长度的字符串方面运行良好。但是,在您的代码中导致“if(str.length()==str2.length())”,您的程序将只输出一个字符! 示例:给定“acd”和“b”,你的答案是“a”,但应该是“abcd”。

    【讨论】:

      猜你喜欢
      • 2020-12-11
      • 2012-12-16
      • 1970-01-01
      • 2021-12-01
      • 2023-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多