又是老台词:欢迎大家来到一晚一度的leetcode刷题日记时间。今天我们来讲讲队列的问题,队列这方面的基础知识需要的同学到博主前面的文章找吧。队列这方面的问题平时博主也是接触得比较少的。下面是一道利用队列解决问题的简单经典题目。

下面直接上题目:

解决思路:

对字符串进行两次遍历。

在第一次遍历时,我们使用哈希映射(从未听过的东西)统计出字符串中每个字符出现的次数。在第二次遍历时,我们只要遍历到了一个只出现一次的字符,那么就返回它的索引,否则在遍历结束后返回 --1。

解题代码(C语言版,用c++解决用到几种容器也可以):

struct hashTable {
    int key;
    int val;
    UT_hash_handle hh;
};

int firstUniqChar(char* s) {
    struct hashTable* frequency = NULL;
    int n = strlen(s);、//求长度
    for (int i = 0; i < n; i++) {
        int ikey = s[i];
        struct hashTable* tmp;
        HASH_FIND_INT(frequency, &ikey, tmp);
        if (tmp == NULL) {
            tmp = malloc(sizeof(struct hashTable));//创建结点
            tmp->key = ikey;
            tmp->val = 1;
            HASH_ADD_INT(frequency, key, tmp);
        }

else {
            tmp->val++;
        }
    }
    for (int i = 0; i < n; i++) {
        int ikey = s[i];
        struct hashTable* tmp;
        HASH_FIND_INT(frequency, &ikey, tmp);
        if (tmp != NULL && tmp->val == 1) {  
            return i;
        }
    }
    return -1;
}

好啦,今天的分享就到这啦,大家早点睡哦,不要熬夜哦。

本贴为博主亲手整理。如有错误,请评论区指出,一起进步。谢谢大家的浏览.

Leetcode刷题日记(十二)相关推荐

  1. 一个算法笨蛋的12月leetCode刷题日记

    类似文章 一个算法笨蛋的2021年11月leetCode刷题日记 一个算法笨蛋的2021年12月leetCode刷题日记 一个算法笨蛋的2022年1月leetCode刷题日记 一个算法笨蛋的2022年 ...

  2. LeetCode刷题(十)----数组-----medium部分(Java、C++)

    LeetCode刷题(十)-----数组-------medium部分(Java.C++) 238. 除自身以外数组的乘积 给定长度为n的整数数组nums,其中n>1,返回输出数组output, ...

  3. Leetcode刷题日记:21-25题篇

    Leetcode刷题日记:21-25题篇 简介 题目: 21. 合并两个有序链表 22. 括号生成 23. 合并K个升序链表 24. 两两交换链表中的节点 25. K 个一组翻转链表 注 简介 这个系 ...

  4. 【LeetCode刷题日记】常用算法基础和理解及运用

    在我们LeetCode刷题过程中,如果我们只是了解数据结构(数组,链表,数)的使用方法,那我们在面对复杂的题目时,是很难很好的解决问题的,因此我们要了解一些常用算法来帮助我们更好的解题. 递归和迭代 ...

  5. SQL leetcode 刷题答案(二)

    承接上篇 SQL leetcode 刷题答案https://blog.csdn.net/hahaha66888/article/details/89925981 5.Big Countries sel ...

  6. LeetCode刷题笔记 二叉树 二叉搜索树的操作

    669 修剪二叉搜索树 ​ 给定一个二叉查找树和两个整数 L 和 R,且 L < R,试修剪此二叉查找树,使得修剪后所有节点的值都在 [L, R] 的范围内. ​ 输入是一个二叉查找树和两个整数 ...

  7. leetcode刷题日记(一)—— 数组

    因为暑期实习找得很不顺利,感觉自身最大的问题体现在刷题量偏少,操作系统,数据库基础不好,所以现在决定写博客来记录整个过程,希望能找到大厂offer,如果不能找到的话也算是为秋招做准备. 剑指offer ...

  8. Nico的刷题日记(二)

    35. 搜索插入位置 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 请必须使用时间复杂度为 O(log n) 的算 ...

  9. leetcode刷题 74.搜索二维矩阵

    题目分析 这是一道简单的查找二维矩阵的题目,所以解决这题有一个最简单的解法就是遍历二维数组即可:但是我们应该注意到题目中的每行整数从左到右是按升序排列的,第一个整数大于前一行的最后一个整数,介于此,我 ...

最新文章

  1. 『计算机视觉』经典RCNN_其一:从RCNN到Faster-RCNN
  2. XDP/eBPF — Overview
  3. 87-区间线段树(板子)--那个苑区的人最瘦
  4. idea设置中文界面_《英雄联盟手游》设置界面中文翻译图分享 外服汉化界面一览...
  5. 电脑home键在哪_电脑键盘各键的名称及使用方法
  6. JSONP 跨域共享信息
  7. 力展物流公司上云 低成本、实例资源使用效率提升
  8. 自然语言处理实践Task2
  9. java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this a
  10. java writebytes()_Java ObjectOutputStream writeBytes()方法与示例
  11. 函数式编程与命令式编程的学习难度比较
  12. 一文带你弄懂什么是索引二叉堆
  13. HDU - 6070 线段树 + 分数规划
  14. 14讲项目实战内页抽出切换效果的实现
  15. 概念区分:灰度发布、蓝绿发布、滚动发布
  16. 他是世界上最杰出程序员之一,1 个月写了个操作系统,退休后去做飞行员!...
  17. 人工智能研究中心快递柜——代码分析九
  18. 新南威尔士 计算机硕士,新南威尔士大学计算机硕士申请条件及案例
  19. Unity Apple登录接入
  20. Js实现Flash播放效果[带源码]

热门文章

  1. geojson转esriJson
  2. PowerBuilder与外界的交互方式
  3. 第十一课用计算机写作教案,五年级下册计算机PowerPoint教案5篇【11-15课】
  4. invader的java学习第二天基础篇
  5. windows 无法停止SQLserver 服务
  6. 千万级车联网 MQTT 消息平台架构设计
  7. netty系列之:netty中的frame解码器
  8. 用于门牌号码检测的深度学习
  9. dedecms内链 arc.archives.class.php,dedecms文章关键字(自动内链)php5.5以上版本urf-8失效的解决方法...
  10. java字母排序_【Java】实现按中文首字母排序 | 学步园