gpt4 book ai didi

c++ - 谁能帮助我理解此C++代码?

转载 作者:行者123 更新时间:2023-12-02 10:13:07 24 4
gpt4 key购买 nike

我向您解释了该程序的工作原理。
步骤1:输入编号。您想运行循环的时间。
步骤2:输入两个字符串s1和s2。
输出:它将为您提供一个字符串s3,其中不包含字符串s2中的任何字符。
问题:我无法理解for循环的工作原理,以及为什么hash值为257,以及循环如何工作。
代码如下。

#include <iostream>
using namespace std;
#include<string.h>
int main()
{
int t;
cout<<"enter any no. to run the loop"<<endl;
cin>>t;
while(t--)
{
string s1,s2,s3;
int i,j,l1,l2;
cout<<"enter two strings s1 and s2"<<endl;
cin>>s1>>s2;
l1=s1.length( );
l2=s2.length( );
int hash[257];
for(i=0;i<257;i++)
{
hash[i]=0;
}
for(i=0;i<l2;i++)
{
hash[s2[i]]++;
}

for(i=0;i<l1;i++)
{
if(hash[s1[i]]==0)
s3=s3+s1[i];
}
cout<<s3<<endl;

}
return 0;
}

最佳答案

该程序确定第二个字符串中不包含第一个字符串中的哪些字符。
程序的示例输入:

1
abcdefghijklmnopqrstuvwxyz
helloworld
输出示例(感谢@mch进行纠正)
abcfgijkmnpqstuvxyz
编辑:请注意,这当然是大小写敏感的,因为字符 aA产生不同的整数值。
这是对该程序的一些评论:
#include <iostream>
using namespace std;
#include <string.h>
int main() {
// Do the whole program as many times as the user says
int t;
cout << "enter any no. to run the loop" << endl;
cin >> t;
while (t--) {
string s1, s2, s3;
int i, j, l1, l2;
// read strings and get their respective lengths
cout << "enter two strings s1 and s2" << endl;
cin >> s1 >> s2;
l1 = s1.length();
l2 = s2.length();

// Array with 257 elements
int hash[257];
// Initialize all elements of array with 0
for (i = 0; i < 257; i++) {
hash[i] = 0;
}

// Count occurrences of characters in second string
// s2[i] is the character at position i in s2
// Increase the value of hash for this character by 1
for (i = 0; i < l2; i++) {
hash[s2[i]]++;
}

// Iterate over s1 characters
// If hash[i] == 0: character i is not contained in s2
// s3 => string of letters in s1 that are not contained in s2
for (i = 0; i < l1; i++) {
if (hash[s1[i]] == 0)
s3 = s3 + s1[i];
}

// output s3
cout << s3 << endl;
}
return 0;
}

关于c++ - 谁能帮助我理解此C++代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62809121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com