统计字符串中重复的字符个数及字符

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

#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\n", i + ‘a‘, bit[i]);
            }
            else if (i >= 26 && i <= 51)
            {
                printf("%c:%d\n", i - 26 + ‘A‘, bit[i]);
            }
            else
            {
                printf("%c:%d\n", 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的顺序输出。

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

时间: 2024-10-24 17:54:01

统计字符串中重复的字符个数及字符的相关文章

关于统计字符串中重复字符个数

一般使用map集合的键不唯一来统计 map.containsKey(b)//判断map集合键中是否包含b 若果不包含就将b作为键存入集合中值为1 map.put(b,1); 如果键中包含那么键不变,值在原来的基础上加1 map.put(b,map.get(key)+1); 代码展现 for(Character key : keySet){ if(!map.contiansKey(b)){ map.put(b,1); }else{ map.put(b,map.get(key)+1); } }

java统计字符串中字符及子字符串个数

import java.util.Scanner;public class Counter { static Scanner scanner = new Scanner(System.in); public static void count(String s) { int low, upper, num, others; low = upper = num = others = 0; for (int i = 0; i < s.length(); i++) { if (Character.is

转载:js实现统计字符串中特定字符出现个数的方法

//js统计字符串中包含的特定字符个数 function getPlaceholderCount(strSource) {   //统计字符串中包含{}或{xxXX}的个数   var thisCount = 0;   strSource.replace(/\{[xX]+\}|\{\}/g, function (m, i) {     //m为找到的{xx}元素.i为索引     thisCount++;   });   return thisCount; }

统计字符串中每个字符的个数

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>统计字符串中每个字符的个数@</title> 6 </head> 7 <body> 8 </body> 9 10 <script type="text/javascript"&

统计字符串中,各个字符的个数(回炉练习)

__author__ = 'ZHHT' #!/usr/bin/env python # -*- coding:utf-8 -*- #统计字符串中,各个字符的个数 #比如:"hello world" 字符串统计的结果为: h:1 e:1 l:3 o:2 d:1 r:1 w:1 a = "hello world" b = set(a) for i in b: if i == ' ': c = a.count(i) i = '空格' print("%s出现%d次

[算法]删除字符串中重复的字符

如何删除字符串中重复的字符 问题描述: 删除字符串中重复的字符,例如,"good"去掉重复的字符串后就变成"god". 第一种方法: "蛮力法",最简单的方法就是把这个字符串看作是一个字符数组,对该数组使用双重循环进行遍历,如果发现有重复的字符,就把该字符置为'\0',最后再把这个字符数组中所有的'\0'去掉,此时得到的字符串就是删除重复字符后的目标字符串. 代码如下: package 删除字符串中重复的字符; public class Solu

统计字符串中数字,字母,空格的个数

这是C语言课后的一道习题,网上可以找到很多相关的代码,都可以很好的基本完成题目要求 但是,我发现很多的代码都无法实现统计字符串中大于10的数字(只局限于统计0-9之间的数字) 此程序可以改进具有十位,百位,千位,甚至更大的数字的统计: #include<stdio.h> int main() { char a[50] ="1 2 3 a b c d @ 15 21 19 88 r 78 100 189 1598 46"; int i,j; int d = 0, c = 0,

统计字符串中汉字的个数

字符串可以包括数字.字母.汉字或者其他字符.使用Charater类的isDigit()方法可以判断字符串中的某个字符是否为数字, 使用Character类的isLetter()方法可以判断字符串中的某个字符是否为字母. 本案例将介绍用"正则表达式"来判断字符串中的某个字符是否为汉字,并统计该字符串中汉字的数量. 关键技术: Java中提供Pattern用于正则表达式的编译方式,该类的静态方法matches()可以执行正则表达式的匹配.该方法的声明如下: public static bo

统计数组中重复元素个数

/** * 循环统计数组或集合中的重复元素个数 * @param args */ public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); String[] ss = {"白","黑","绿","白"}; for (int i = 0; i < ss.len