剑指offer--之字符串中先出现两次的字符
来源:互联网 发布:股市数据下载 编辑:程序博客网 时间:2024/06/08 14:46
题目要求:
查找一个字符串中第一个只出现两次的字符串,比如“abcdefabcdefabc”,这样第一个只出现两次的字符就是‘d’。
解题思路:
首先拿到这个题,想到的方法就不会是拿这个字符区号后面的字符比较并且计数,因为这种方法的时间复杂度就是O(n^2),所以为了优化就有了其他的方法。
建一个哈希表 字符char是一个长度为8的数据类型 这就共有256种可能 ,第一次扫描 哈希表中更新一个字符的时间复杂度是O(n) ,第二次扫描时读取一个字符出现的次数,它的时间复杂度也是O(n)。所以总的时间复杂度是O(n), 空间复杂度是O(1)。
这样来说是比较高效的,代码如下:
char firsttwowords(char* str){ if (str == NULL) return '\0'; const int size = 256; //因为char是长度为8的数据类型 因此共有256种可能 int hashtables[size] = { 0 }; char* hashkey = str; while (*(hashkey) != '\0') { hashtables[*(hashkey++)]++; } hashkey = str; while (*hashkey != '\0') { if (hashtables[*hashkey] == 2) { return *hashkey; } hashkey++; } return '\0';}
阅读全文
0 0
- 剑指offer--之字符串中先出现两次的字符
- 【剑指offer】删除在另一个字符串中出现的字符
- 《剑指Offer》:删除在另一个字符串中出现的字符
- 【剑指offer】删除在另一个字符串中出现的字符
- 【剑指offer】之删除在另一个字符串中出现的字符
- 找出字符串中第一个只出现两次的字符
- day07之包含min函数的栈+查找一个字符串中第一个只出现两次的字符
- 【一些题】剑指offer:在字符串中找出第一个只出现一次的字符
- 剑指offer 面试题35 字符串中第一个出现一次的字符
- 剑指offer—求字符串中第一个只出现一次的字符
- JAVA实现 剑指offer—求字符串中第一个只出现一次的字符
- 剑指Offer----面试题35:扩展----删除字符串中所有重复出现的字符 & 变位词
- 剑指offer 面试题35扩展:删除字符串中所有重复出现的字符 (C++版)
- 剑指offer—字符串中第一次只出现一次的字符
- 剑指offer统计字符数组中第一次出现的字符
- 查找一个字符串中第一个只出现两次的字符。
- 查找一个字符串中第一个只出现两次的字符
- 查找一个字符串中第一个只出现两次的字符
- 有关ViewPager使用及解决ViewPager的item需要展示多个控件
- C#获取鼠标位置,模拟鼠标,模拟键盘(多方转载)
- memcached--统计命令
- scp命令
- K-means 算法
- 剑指offer--之字符串中先出现两次的字符
- 我是怎么绕过微信小程序审核机制的
- 【C/C++】文件流操作
- ps -ef 命令详解
- spring学习笔记(二)
- Python开发实战pdf
- Mysql Binlog三种格式介绍及分析
- 5.x的AssetBundle
- HDU 1151 Air Raid(最小路径覆盖)