题解 | #找位置#

找位置

https://www.nowcoder.com/practice/e3b2cc44aa9b4851bdca89dd79c53150

#include <iostream>
#include<string>
#include<vector>
using namespace std;
bool findinrepeat(char a,vector<char> b)  //目标字符是否在重复序列中出现
{
    if (!b.empty()) 
    {
      for (int i = 0; b[i] != '\0'; i++) 
      {
       if (a == b[i]) 
       {
        return true;
       }
      }
    }
    return false;
}
int main() {
    string a;
    while (cin >> a)
    { // 注意 while 处理多个 case
     vector<char> repeat;  //重复的字符全部扔进去
     for (int i = 0; a[i] != '\0'; i++) 
     {
        if (!(findinrepeat(a[i], repeat))) //重复序列中没有
        {
          for (int j = i + 1; a[j] != '\0'; j++) 
                {
                  if (a[i] == a[j]) 
                  {
                   repeat.push_back(a[i]); //没找到,试图找到
                   break;//终止当前循环,下一个i
                  }
                }
        }
      
     }//寻找重复的字符有哪些完毕,全部存入repeat中
      
      //接下来的代码是依照格式打印
  
      for (int i = 0; i < repeat.size(); i++) 
      {
        int counter = 0;
         for (int k = 0; a[k] != '\0'; k++) 
         {
           if(a[k] == repeat[i])
           {
            counter++;    //用于检验输出格式中是否带逗号
            if (counter > 1) 
            {
              cout << ",";         
            }
            cout << a[k] << ":" <<k;
           }
         }
         cout << endl;
      }
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务