定义char a[6][32]={"AAA","BBB","CCC","CCC","CCC,"DDD"},
如何去除数组a中的重复字符串元素?去百度找了找什么双重循环的方法,但是如果有连续3个数一样就会出问题。有没有哪位大佬给指教一下?如果能提供代码希望能测试一下
// test1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
#define STR_NUM 11
bool contain(int num, int flag[], int count)
{
for (int i = 0; i < count; ++i)
{
if (flag[i] == num)
return true;
}
return false;
}
int _tmain(int argc, _TCHAR* argv[])
{
int flag[STR_NUM] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };//标记哪些字符串重复了,重复的取大的索引值
int i = 0;
char a[STR_NUM][32] = { "AAA", "BBB", "CCC", "CCC", "CCC", "DDD", "DDD", "EEE", "FFF", "DDD", "GGG" };
char res[STR_NUM][32] = {};
for (int n = 0; n < STR_NUM; ++n)
{
for (int m = n + 1; m < STR_NUM; ++m)
{
if (strcmp(a[n], a[m]) == 0)
{
flag[i++] = m;
}
}
}
//这样循环以后,flag内就存储了重复的字符串的索引
i = 0;
for (int n = 0; n < STR_NUM; ++n)
{
if (!contain(n, flag, STR_NUM))
{
strcpy_s(res[i], a[n]);
cout << "res[" << i << "]:" << res[i] << endl;
i++;
}
}
cin.get();
return 0;
}
经测试可以实现你的需求
没有考虑效率的问题。