哈希表-统计字符出现的次数

第一个只出现一次的字符:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”则输出b

 答案:由于题目出现了与字符出现次数相关。我们可以利用一个容器来存放每个字符出现的次数,也就是说这个容器的作用是把一个字符隐射成一个数字。所以我们利用哈希表。

#include <QCoreApplication>
#include<iostream>
#include<QDebug>
char findOnlyOneChar(char *inputString)
{
    if(inputString==NULL)
    {
        return ‘\0‘;
    }

    const int hashSize=256;//表示256个字符的Assic
    unsigned int hashTable[hashSize];//哈希容器

    //初始化哈希数组
    for(unsigned int i=0;i<hashSize;i++)
    {
        hashTable[i]=0;
    }

    char *inputString1=inputString;

    while(*(inputString1)!=‘\0‘)
    {
        //hashTable[*(inputString1++)]++;
        //hashTable[*(inputString1)] 如hastTable[‘a‘]  ‘a‘会变成ascii码整数值97
        hashTable[*(inputString1)]=hashTable[*(inputString1)]+1;
        inputString1++;      

    }

    inputString1=inputString;

    while(*inputString1!=‘\0‘)
    {
        if(hashTable[*inputString]==1)
        {
            return *inputString;
        }
        inputString++;

    }
    return ‘\0‘;

}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    test();
     std::cout<<findOnlyOneChar("abaccdeff");

     system("pause");

    return a.exec();
}
时间: 2024-12-24 18:43:28

哈希表-统计字符出现的次数的相关文章

忽略字母大小写情况下统计字符出现的次数

package lsh.element.algrithom; import java.util.Scanner; public class CountLetterIgnoreCase { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入带有字母的字符串: "); String str = input.nextLine(); in

用indexof来统计字符出现的次数

代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible&quo

用indexof统计字符出现的次数

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

Trie实践:一种比哈希表还快的数据结构

本文分为5部分.我从思考的角度,由浅到深带你认识Trie数据结构. 1.桶状哈希表与直接定址表的概念. 2.为什么直接定址表会比桶状哈希表快 3.初识Trie数据结构 4.Trie为什么会比桶状哈希表快 5.实际做实验感受下Trie , std::map , std::unordered_map的差距 6.最后的补充 1.桶状哈希表与直接定址表的概念. 先考虑一下这个问题:如何统计5万个0-99范围的数字出现的次数? 可以用哈希表来进行统计.如下: [cpp] view plaincopypri

技巧之C#统计字符串中字符出现的次数(转)

方法1.自定义类 class CharNum { private char c; private int num; public char C { get { return c; } } public int Num { get { return num; } set { num = value; } } public CharNum(char ch) { this.c = ch; this.num = 1; } } static void Main(string[] args) { /* */

剑指offer (35) 第一个只出现一次的字符 字符哈希表

题目:在字符串中找出第一个只出现一次的字符 题解分析:用空间换时间,使用哈希表,key为字符,value是该字符出现的次数 字符是一个长度为8的数据类型,因此总共只有256种可能,我们可以创建一个长为256的数组, 每个字符根据其ASCII码值作为数组的下标,即哈希表的key,而相应数组位置存储每个字符出现的次数,即哈希表的value char GetFirstOnce(const char* str) { assert(str != NULL); const int hashSize = 25

swift-08-使用键值对儿统计字符在字符串中出现的次数

// //  main.swift //  12- // //  Created by wanghy on 15/8/9. //  Copyright (c) 2015年 wanghy. All rights reserved. // //有一个字符串,统计每个字符出现的次数 //思路一:利用两个for循环进行嵌套 // var array = ["1","2","4","4","2","4&qu

华为上机练习题--统计各小写字符出现的次数

题目: 手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出.提示可以用map 例子:输入:aaabbbccc 输出:a 3 b 3 c 3 分析: 看到后面的提示,简直就是不用动脑,直接简单粗暴的顺势而上 直接上代码: import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TestCharAcount

读取一个文件中的字符,统计每个字符出现的次数

1 //统计每个字符出现的次数 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 6 int main() 7 { 8 FILE *fp_read; 9 char ch; 10 int count[26]; 11 int index; 12 fopen_s(&fp_read,"E:\\first.txt","r"); 13 memset(coun