查找字符串中的匹配符号

时间:2013-11-14 05:05:02

标签: c

如上所述,需要查找字符串中的所有重复元素(用户插入的字符串)。我知道代码的大部分内容以及它应该如何看待,但是引起我注意的是,你如何比较单个字符串中的符号? 例如,如果字符串是:

“ABCDEFGACFA”

结果应该是:

“CF”

到目前为止我只有这个想法:

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

1 个答案:

答案 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!