如上所述,需要查找字符串中的所有重复元素(用户插入的字符串)。我知道代码的大部分内容以及它应该如何看待,但是引起我注意的是,你如何比较单个字符串中的符号? 例如,如果字符串是:
“ABCDEFGACFA”
结果应该是:
“CF”
到目前为止我只有这个想法:
for(i=0;i<stringLenght; ++i)
{
for(j=i+1; j < stringLenght; ++j)
{
if(string[i]==[string[j]
// ..........
答案 0 :(得分:1)
我不确定我是否理解你的问题,但我有一个想法可以帮助你识别重复的符号。
使用“map”可以解决这个问题,例如:假设我们只使用大写字符,所以我们可以使用整数数组来模拟映射,如果地图中的元素大于1,然后在你的字符串中重复该元素。
这是我在C ++中获取该地图的代码:
string str;
int myMap[26]; //an element for each uppercase character
memset(myMap, 0, sizeof myMap); // initialize each element to zero
cin>>str;
for(int i=0; i<str.length(); i++)
{
//(str[i]-'A') will map each character to an integer
// A -> 0, B -> 1, C -> 2, etc.
myMap[(int)(str[i]-'A')]++;
}
//print solution:
for(int i=0; i<26; i++)
{
if(myMap[i] > 1)
{
cout<<(char)(i+'A')<<" is repeated!"<<endl;
}
}
对于您的示例,输出将为:
A is repeated!
C is repeated!
F is repeated!