zoukankan      html  css  js  c++  java
  • 华科机考:找位置

    时间限制:1秒 空间限制:32768K

    题目描述

    对给定的一个字符串,找出有重复的字符,并给出其位置,如:abcaaAB12ab12输出:a,1;a,4;a,5;a,10,b,2;b,11,1,8;1,12, 2,9;2,13。

    输入描述: 输入包括一个由字母和数字组成的字符串,其长度不超过100。

    输出描述: 可能有多组测试数据,对于每组数据, 按照样例输出的格式将字符出现的位置标出。

    1、下标从0开始。 2、相同的字母在一行表示出其出现过的位置。

    输入例子: abcaaAB12ab12

    输出例子: a:0,a:3,a:4,a:9

                  b:1,b:10

                  1:7,1:11

                  2:8,2:12

    思路:1.首先打个表(或者用map),记录一下每个字母出现的个数

             2.对出现字数超过2个的字母,再来找其出现的具体位置

            3.最后输出的顺序是按照字母出现的先后顺序来的(map会自动排序诶o(╯□╰)o)

    代码:

    #include <iostream>
    #include <map>
    using namespace std;
    
    int main(){
        map<char,int> a;
        int flag;
        string str;
        while(cin>>str){
         for(int i=0;i<str.size();i++)
           a[str[i]]++;
         for(int i=0;i<str.size();i++){
           if(a[str[i]]>1){
              flag=0;
            for(int j=0;j<str.size();j++){
              if(str[i]==str[j]&&flag==0){
              cout<<str[i]<<':'<<j;
              flag=1;
              }
              else if(str[i]==str[j]&&flag==1){
              cout<<','<<str[i]<<':'<<j;
              }
            }
            a.erase(str[i]);//防止再次输出
            cout<<endl;
           }
         }
         a.clear();
        }
        return 0;
    }
  • 相关阅读:
    【JOI2017春季合宿】Port Facility
    LOJ504「LibreOJ β Round」ZQC 的手办
    UOJ37. 【清华集训2014】主旋律
    CF1012F Passports
    AT2370 Piling Up
    CF908G New Year and Original Order
    CF643E Bear and Destroying Subtrees
    CF183D T-shirt
    「JOISC 2016 Day 3」回转寿司
    「LibreOJ β Round #2」计算几何瞎暴力
  • 原文地址:https://www.cnblogs.com/mlgjb/p/6722041.html
Copyright © 2011-2022 走看看