题解 | #找位置#

找位置

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

#include <cstdio>
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

/**
参考题解
https://blog.nowcoder.net/n/057ba31277ec452ab3c3a87b6a9a4999
*/

vector <int> arr[128];//记录每个字符在字符串中的下标
bool visit[128];//记录字符串中的一个字符是否已经输出

void init(string str){
    for(int i = 0; i < str.size(); i ++){
        arr[str[i]].push_back(i);
    }
}

int main() {
    string str;
    while(cin >> str){
        memset(visit, false, sizeof(visit));
        init(str);

        for(int i = 0; i < str.size(); i ++){//按字符串的顺序输出

            if(!visit[str[i]] && arr[str[i]].size() > 1){//该字符为第一次被访问到,且在字符串中不止出现一次
                for(int j = 0; j < arr[str[i]].size(); j ++){//输出该字符在原字符串中的所有下标,由arr记录

                    if(j == 0) printf("%c:%d", str[i], arr[str[i]][j]);
                    else printf(",%c:%d", str[i], arr[str[i]][j]);
                    visit[str[i]] = true;
                }
                cout << endl;
            }
        }
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
09-29 17:44
已编辑
蔚来_测(准入职员工)
//鲨鱼辣椒:见不了了我实习了四个月上周再投筛选了一天就给我挂了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务