zoukankan      html  css  js  c++  java
  • 统计字符串中重复的字符个数及字符

    做华为的试题,发现有很多需要字符串重复相关知识的。现在补上:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string>
    #include <string.h>
    #include <iostream>
    #include <vector>
    #include <algorithm> 
    
    using namespace std;
    
    
    int main(int argc, char** argv)
    {
        string a;
        int bit[62] = {0};
        cin >> a;
        //按字母顺序
        for (int i = 0; i < a.size(); i++)
        {
            if (a[i] >= 'a'&&a[i] <= 'z')
            {
                bit[a[i] - 'a']++;
            }
            if (a[i] >= 'A'&&a[i] <= 'Z')
            {
                bit[a[i] - 'A' + 26]++;
            }
            if (a[i] >= '0'&&a[i] <= '9')
            {
                bit[a[i] - '0' + 52]++;
            }
        }
        
        for (int i = 0; i < 62; i++)
        {
            if (bit[i] != 0)
            {
                if (i <= 25)
                {
                    printf("%c:%d
    ", i + 'a', bit[i]);
                }
                else if (i >= 26 && i <= 51)
                {
                    printf("%c:%d
    ", i - 26 + 'A', bit[i]);
                }
                else
                {
                    printf("%c:%d
    ", i - 52 + '0', bit[i]);
                }
            }
        }
        //按字母出现先后顺序
        vector<char> aa{ a[0] };
        vector<int> bb{1};
        for (int i = 1; i < a.size(); i++)
        {
            bool flag = true;
            for (int j = 0; j < aa.size(); j++)
            {
                if (a[i] == aa[j])
                {
                    flag = false;
                    bb[j]++;
                    break;
                }
            }
            if (flag)
            {
                aa.push_back(a[i]);
                bb.push_back(1);
            }
        }
        for (int i = 0; i < aa.size(); i++)
        {
            cout << aa[i] << ":" << bb[i] << endl;
        }
    
        return 0;
    }

    直接统计的,思想是给个数组,ascii最多也就256个,如果什么字符都有就申请256的int,否则就52个。然后可以按照a-z,A-Z,0-9的顺序输出。

    另一种:按照字符串出现顺序输出,需要两个辅助空间,一个存储先出现的字符,一个是对应的出现次数。

  • 相关阅读:
    saltstack
    python一个命令开启http服务器
    常用服务安装部署
    位置1
    linux中python3安装和使用
    Linux基础系统优化
    Shell基本命令
    linux系统目录结构
    远程连接linux服务器
    VMware和Centos安装使用
  • 原文地址:https://www.cnblogs.com/wyc199288/p/5619331.html
Copyright © 2011-2022 走看看