zoukankan      html  css  js  c++  java
  • 华为社招题目

    题目描述:

    给定长度小于100的一个字符串,区分大小写的情况下统计其中字母的个数,并按照由大到小的顺序输出.当字母个数一样时,按照把先出现的字母放在前面.当字符串中没有字母时,则不要输出.

    举例:

    输入:

    abbbdcdc123

    输出:

    b=3

    d=2

    c=2

    a=1

      1 #include <iostream>
      2 #include <string>
      3 #include <set>
      4 #include <vector>
      5 #include <algorithm>
      6 using namespace std;
      7 
      8 //答题思路:
      9 /*
     10 首先统计出总共有多少个不同的字母;
     11 对不同的字母,用二维vector记录其个数(初始化为0)以及首次出现的位置(初始化为-1);
     12 遍历整个字符串,对个数和首次位置进行更新;
     13 对vector基于个数和首次位置进行排序(冒泡法)
     14 */
     15 
     16 int main()
     17 {
     18     string str;
     19     while (cin >> str)
     20     {
     21         set<char> setInt;
     22         //这里用set来剔除重复的,还有更好的方法吗?
     23         for (int i = 0; i < str.size(); i++)
     24         {
     25             if (str[i] >= 'A' && str[i] <= 'z')
     26             {
     27                 setInt.insert(str[i]);
     28             }
     29         }
     30 
     31         cout << endl;
     32         for (set<char>::iterator it = setInt.begin(); it != setInt.end(); it++)
     33         {
     34             cout << " " << *it;
     35         }
     36         cout << endl; 
     37 
     38         //把set转成vector来操作,set的玩的不熟.
     39         vector<char> vec0;
     40         for (set<char>::iterator it = setInt.begin(); it != setInt.end(); it++)
     41         {
     42             vec0.push_back(*it);
     43         }
     44 
     45         vector<vector<int>> vec2;
     46         vector<int> vec1;
     47         int nOutSize = vec0.size();
     48         int nInnerSize = 3;
     49 
     50         for (int j = 0; j < nInnerSize; j++)
     51         {
     52             vec1.push_back(-1);
     53         }
     54         for (int k = 0; k < nOutSize; k++)
     55         {
     56             vec2.push_back(vec1);    
     57             vec2[k][0] = vec0[k]; //第一列存字符,第二列存个数,第三列存首次位置.
     58             vec2[k][1] = 0;
     59         }
     60 
     61         for (int k = 0; k < nOutSize; k++)
     62         {
     63             for (int j = 0; j < nInnerSize; j++)
     64             {
     65                 cout << " " << vec2[k][j];
     66             }
     67             cout << endl;
     68         }
     69         cout << endl;
     70 
     71         for (int i = 0; i < str.size(); i++)
     72         {
     73             for (int j = 0; j < vec0.size(); j++)
     74             {
     75                 if (str[i] == vec2[j][0])
     76                 {
     77                     if (vec2[j][2] == -1)
     78                     {
     79                         vec2[j][2] = i;
     80                     }
     81                     vec2[j][1]++;
     82                 }
     83             }
     84         }
     85 
     86         for (int k = 0; k < nOutSize; k++)
     87         {
     88             for (int j = 0; j < nInnerSize; j++)
     89             {
     90                 cout << " " << vec2[k][j];
     91             }
     92             cout << endl;
     93         }
     94         cout << endl;
     95 
     96         for (int i = 0; i < nOutSize-1; i++)
     97         {
     98             for (int j = i + 1; j < nOutSize; j++)
     99             {
    100                 if (vec2[i][1] < vec2[j][1])
    101                 {
    102                     vec2[i].swap(vec2[j]); //两个vector之间交换
    103                 }
    104                 else if (vec2[i][1] == vec2[j][1])
    105                 {
    106                     if (vec2[i][2] > vec2[j][2])
    107                     {
    108                         vec2[i].swap(vec2[j]);
    109                     }
    110                 }
    111             }
    112         }
    113 
    114         for (int k = 0; k < nOutSize; k++)
    115         {
    116             for (int j = 0; j < nInnerSize; j++)
    117             {
    118                 cout << " " << vec2[k][j];
    119             }
    120             cout << endl;
    121         }
    122         cout << endl;
    123 
    124         for (int k = 0; k < nOutSize; k++)
    125         {
    126             //转成字符类型
    127             cout << (char)vec2[k][0] << "=" << vec2[k][1] << endl;
    128         }
    129     }
    130 }

    输入:

    abbbdcdc123

     输出:

    a b c d

    97 0 -1
    98 0 -1
    99 0 -1
    100 0 -1

    97 1 0
    98 3 1
    99 2 5
    100 2 4

    98 3 1
    100 2 4
    99 2 5
    97 1 0

    b=3
    d=2
    c=2
    a=1

    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    spring 配置详解
    SpringBoot 快速整合Mybatis(去XML化+注解进阶)
    Spring Boot Mvc 单元测试
    Connect to DB2 database in eclipse via jdbc
    spring boot 学习
    小程序扫描普通链接二维码跳转小程序指定界面
    开启MySQL远程访问权限 允许远程连接
    JS概述
    全然用linux工作,放弃windows
    FarPoint.Win.Spread 常规操作
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/11409460.html
Copyright © 2011-2022 走看看