C++ 删除C+中的字符串元素+;
我必须输入一个整数,然后是一个包含n个元素的字符串,int类型; 任务是删除重复的元素。我试图用这段代码解决问题,但不知道哪里出了错。你能帮我吗C++ 删除C+中的字符串元素+;,c++,string,C++,String,我必须输入一个整数,然后是一个包含n个元素的字符串,int类型; 任务是删除重复的元素。我试图用这段代码解决问题,但不知道哪里出了错。你能帮我吗 #include <iostream> #include <string> using namespace std; int main() { int n, br=0; string masiv; cin>>n; for(int i=0;i<n;i++) {
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n, br=0;
string masiv;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>masiv[i];
}
n=masiv.size();
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(masiv[i]==masiv[j] && i!=j)
{
masiv.erase (std::remove(masiv.begin(), masiv.end(), masiv[i]), masiv.end());
}
}
}
cout<<masiv<<endl;
system("pause");
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int n,br=0;
弦马西夫;
cin>>n;
对于(int i=0;i>masiv[i];
}
n=masiv.size();
对于(int i=0;i使用以下代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n, br=0;
string masiv="";
cin>>n;
for(int i=0;i<n;i++)
{
char c;
cin>>c;
masiv += c;
}
n=masiv.size();
string result="";
for(int i=0;i<n;i++)
{
bool repeated = false;
for(int j=0;j<result.size();j++)
{
if(masiv[i]==result[j])
{
repeated = true; // indicating that massiv[i] was added before
}
}
if(repeated == false)
{
result += masiv[i]; // won't add masiv[i] to the result unless it's the first time encountered
}
}
cout<<result<<endl;
system("pause");
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int n,br=0;
字符串masiv=“”;
cin>>n;
对于(int i=0;i>c;
masiv+=c;
}
n=masiv.size();
字符串结果=”;
对于(int i=0;i使用以下代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n, br=0;
string masiv="";
cin>>n;
for(int i=0;i<n;i++)
{
char c;
cin>>c;
masiv += c;
}
n=masiv.size();
string result="";
for(int i=0;i<n;i++)
{
bool repeated = false;
for(int j=0;j<result.size();j++)
{
if(masiv[i]==result[j])
{
repeated = true; // indicating that massiv[i] was added before
}
}
if(repeated == false)
{
result += masiv[i]; // won't add masiv[i] to the result unless it's the first time encountered
}
}
cout<<result<<endl;
system("pause");
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int n,br=0;
字符串masiv=“”;
cin>>n;
对于(int i=0;i>c;
masiv+=c;
}
n=masiv.size();
字符串结果=”;
对于(int i=0;i使用以下代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n, br=0;
string masiv="";
cin>>n;
for(int i=0;i<n;i++)
{
char c;
cin>>c;
masiv += c;
}
n=masiv.size();
string result="";
for(int i=0;i<n;i++)
{
bool repeated = false;
for(int j=0;j<result.size();j++)
{
if(masiv[i]==result[j])
{
repeated = true; // indicating that massiv[i] was added before
}
}
if(repeated == false)
{
result += masiv[i]; // won't add masiv[i] to the result unless it's the first time encountered
}
}
cout<<result<<endl;
system("pause");
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int n,br=0;
字符串masiv=“”;
cin>>n;
对于(int i=0;i>c;
masiv+=c;
}
n=masiv.size();
字符串结果=”;
对于(int i=0;i使用以下代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n, br=0;
string masiv="";
cin>>n;
for(int i=0;i<n;i++)
{
char c;
cin>>c;
masiv += c;
}
n=masiv.size();
string result="";
for(int i=0;i<n;i++)
{
bool repeated = false;
for(int j=0;j<result.size();j++)
{
if(masiv[i]==result[j])
{
repeated = true; // indicating that massiv[i] was added before
}
}
if(repeated == false)
{
result += masiv[i]; // won't add masiv[i] to the result unless it's the first time encountered
}
}
cout<<result<<endl;
system("pause");
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int n,br=0;
字符串masiv=“”;
cin>>n;
对于(int i=0;i>c;
masiv+=c;
}
n=masiv.size();
字符串结果=”;
对于(int i=0;i首先,您应该将输入读入一个字符,然后使用push_back()
将读取的字符保存到字符串中
cin>>n;
for(int i=0;i<n;i++)
{
char c;
cin>>c;
masiv.push_back(c);
}
看看smipleerase()
方法有多好?只需擦除重复的元素(后一个).j
指定重复元素的标记,并且1
指定将从该标记开始删除的字符数。必须减小j
,因为一旦在第j个标记处删除字符,现在j将指向下一个字符。当内循环继续时,它将增加j
。如果在删除字符后不调整标记,则循环递增时将跳过字符。必须调整j
以指向正确的索引。因此j-;
编辑:更好的循环
您可以重新排列循环,而不必检查i==j
。只需启动内部循环索引,使其仅比外部循环索引大1
for(int i=0;i<masiv.size();i++)
{
for(int j=i+1;j<masiv.size();j++)
{
if(masiv[i]==masiv[j])
{
masiv.erase(j--, 1);
}
}
}
对于(int i=0;i首先,您应该将输入读入一个字符,然后使用push_back()
将读取的字符保存到字符串中
cin>>n;
for(int i=0;i<n;i++)
{
char c;
cin>>c;
masiv.push_back(c);
}
看看smipleerase()
方法有多好?只需擦除重复的元素(后一个).j
指定重复元素的标记,并且1
指定将从该标记开始删除的字符数。必须减小j
,因为一旦在第j个标记处删除字符,现在j将指向下一个字符。当内循环继续时,它将增加j
。如果在删除字符后不调整标记,则循环递增时将跳过字符。必须调整j
以指向正确的索引。因此j-;
编辑:更好的循环
您可以重新排列循环,而不必检查i==j
。只需启动内部循环索引,使其仅比外部循环索引大1
for(int i=0;i<masiv.size();i++)
{
for(int j=i+1;j<masiv.size();j++)
{
if(masiv[i]==masiv[j])
{
masiv.erase(j--, 1);
}
}
}
对于(int i=0;i首先,您应该将输入读入一个字符,然后使用push_back()
将读取的字符保存到字符串中
cin>>n;
for(int i=0;i<n;i++)
{
char c;
cin>>c;
masiv.push_back(c);
}
看看smipleerase()
方法有多好?只需擦除重复的元素(后一个).j
指定重复元素的标记,并且1
指定将从该标记开始删除的字符数。必须减小j
,因为一旦在第j个标记处删除字符,现在j将指向下一个字符。当内循环继续时,它将增加j
。如果在删除字符后不调整标记,则循环递增时将跳过字符。必须调整j
以指向正确的索引。因此j-;
编辑:更好的循环
您可以重新排列循环,而不必检查i==j
。只需启动内部循环索引,使其仅比外部循环索引大1
for(int i=0;i<masiv.size();i++)
{
for(int j=i+1;j<masiv.size();j++)
{
if(masiv[i]==masiv[j])
{
masiv.erase(j--, 1);
}
}
}
对于(int i=0;i首先,您应该将输入读入一个字符,然后使用push_back()
将读取的字符保存到字符串中
cin>>n;
for(int i=0;i<n;i++)
{
char c;
cin>>c;
masiv.push_back(c);
}
看看smipleerase()
方法有多好?只需擦除重复的元素(后一个).j
指定重复元素的标记,并且1
指定将从该标记开始删除的字符数。必须减小j
,因为一旦在第j个标记处删除字符,现在j将指向下一个字符。当内循环继续时,它将增加j
。如果在删除字符后不调整标记,则循环递增时将跳过字符。必须调整j
以指向正确的索引。因此j-;
编辑:更好的循环
您可以重新排列循环,而不必检查i==j
。只需启动内部循环索引,使其仅比外部循环索引大1
for(int i=0;i<masiv.size();i++)
{
for(int j=i+1;j<masiv.size();j++)
{
if(masiv[i]==masiv[j])
{
masiv.erase(j--, 1);
}
}
}
用于(int i=0;i#包括
#包括
#包括//标准::唯一,标准::距离
#包括
int main(int argc,字符**argv)
{
std::字符串masiv;
int n;
标准:cin>>n;