zoukankan      html  css  js  c++  java
  • 计算机考研复试真题 找位置

    题目描述

    对给定的一个字符串,找出有重复的字符,并给出其位置,如: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、相同的字母在一行表示出其出现过的位置。
    示例1

    输入

    abcaaAB12ab12
    

    输出

    a:0,a:3,a:4,a:9
    b:1,b:10
    1:7,1:11
    2:8,2:12




    /*
    程序设计思想:类似于kmp算法。两层for循环,第一层i循环遍历字符串到倒数第二位,第二层j从第一层的位置开始
                循环遍历字符串到倒数第一位,若等于则输出依次i位置信息,并置哨兵为假即之后不再输出,然后依次输出j
                位置信息,并置已输出的j位置信息为已输出即让第一层i不再输出。
    */
    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
       string s;
       while(cin>>s)
       {
         for(int i=0;i<s.size()-1;++i)  //第一层循环i
         {
             bool flag=true;  //哨兵
             if(s[i]=='*')  //已输出不再扫描
                 continue;
             for(int j=i+1;j<s.size();++j)  //第二层循环j
             {                       
                  if(s[i]==s[j])
                  {
                     if(flag)
                     {
                         cout<<s[i]<<":"<<i;
                         flag=false;
                     } 
                     cout<<","<<s[j]<<":"<<j;
                     s[j]='*';  
                  }           
             }
             if(!flag)
             {
               cout<<endl; 
             }
         }
       }
    }
  • 相关阅读:
    FZU 2112 并查集、欧拉通路
    HDU 5686 斐波那契数列、Java求大数
    Codeforces 675C Money Transfers 思维题
    HDU 5687 字典树插入查找删除
    HDU 1532 最大流模板题
    HDU 5384 字典树、AC自动机
    山科第三届校赛总结
    HDU 2222 AC自动机模板题
    HDU 3911 线段树区间合并、异或取反操作
    CodeForces 615B Longtail Hedgehog
  • 原文地址:https://www.cnblogs.com/parzulpan/p/9923096.html
Copyright © 2011-2022 走看看