-1

如上所述,需要在一个字符串中找到所有重复的元素(用户插入的字符串)。我知道代码的大部分内容以及它的外观,但让我印象深刻的是,你如何比较单个字符串中的符号?例如,如果字符串是:

“ABCDEFGACFA”

结果应该是:

“CF”

到目前为止我唯一的想法:

for(i=0;i<stringLenght; ++i)
  {
  for(j=i+1; j < stringLenght; ++j)
     {
     if(string[i]==[string[j]
      // ..........
4

1 回答 1

1

我不确定我是否理解你的问题,但我有一个想法可以帮助你识别重复的符号。

使用“地图”可以解决这个问题,例如:假设我们只使用大写字符,所以我们可以使用整数数组来模拟映射,如果地图中的元素大于 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!
于 2013-11-14T06:07:33.043 回答