样例:比如“abcdabc”,第一个只出现一次的字符为d,位置为3

解决方案1:O(n*n)的复杂度

遍历字符串中的每个字符,然后用该字符在字符串中进行查找,如果没有找到和当前字符相同的字符。则当前字符为第一个 只出现一次的字符。

解决方案2:O(n)的复杂度

采取空间换时间的策略

开一个辅助数组,做哈希映射

第一次扫描时,更新在辅助数组中当前字符出现的次数。

hash查找的时间复杂度为o(1)。

第二次扫描时,在辅助数组中通过查辅助数组看当前字符是否只出现了一次,从头到尾的顺序遍历保证了“第一个”,辅助数组的查找保证了“只出现一次”。

code:

#include <bits/stdc++.h>
using namespace std;int main()
{string str="abcdabc";//在字符串中查找出第一个只出现一次的字符//o(n) 空间换时间int a[300];memset(a,0,sizeof(a));//第一次遍历 统计各字符出现次数for(int i=0;i<str.length();i++){a[str[i]]++;}//第二次遍历 辅助数组做哈希映射int pos=-1;for(int i=0;i<str.length();i++){if(a[str[i]]==1){pos=i;break;}}cout<<pos<<endl;return 0;
}

转载于:https://www.cnblogs.com/yinbiao/p/10469880.html

面试题之在字符串中查找出第一个只出现一次的字符的位置相关推荐

  1. 在字符串中找出第一个只出现一次的字符,Python实现

    要求: 1. 不能依赖库函数直接实现此功能,需使用基础的数据结构实现 2. 时间复杂度 O(n) 思路: 1. 用字典存储每个字符在字符串中出现的次数 2. 列表是有序的,用来存储字符的出现先后 3. ...

  2. 在字符串中找出第一个只出现一次的字符

    如输入一个字符串char* s ="abcdacfgb",最终输出'd'. 方法一: 可以创建两个指针i,j,定义计数变量int count = 0: 起点均为s[0],j先行, ...

  3. 找出第一个只出现一次的字符

    在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b 题目很简单 用一个int 数组,全部初始化为-1. 遍历字符串,如果值为-1,就将值改为字符串的下标,否则设为-2 然后再 ...

  4. 《剑指offer》第五十题(字符串中第一个只出现一次的字符)

    // 面试题50(一):字符串中第一个只出现一次的字符 // 题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出 // 'b'. #include & ...

  5. [剑指offer]面试题35:第一个只出现一次的字符

    面试题35:第一个只出现一次的字符 题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'. 代码如下: char FirstNotRepeatin ...

  6. 剑指Offer面试题:30.第一个只出现一次的字符

    一.题目:第一个只出现一次的字符 题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'.要求时间复杂度为O(n). 最直观的想法是从头开始扫描这个 ...

  7. 剑指offer面试题50. 第一个只出现一次的字符(哈希表)

    题目描述 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. s 只包含小写字母. 思路 详见链接 代码 class Solution:def firstUniqueChar(se ...

  8. [剑指offer]面试题第[50]题[JAVA][第一个只出现一次的字符][哈希表][HashMap]

    [问题描述][简单] 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. s 只包含小写字母.示例:s = "abaccdeff" 返回 "b&quo ...

  9. 剑指Offer - 面试题50. 第一个只出现一次的字符(unordered_map)

    1. 题目 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. 示例: s = "abaccdeff" 返回 "b"s = "&q ...

最新文章

  1. linux 文件缓冲区,如何查看 Linux 当前缓存了哪些大文件?
  2. visual assist x太卡了_LeetCode69. x 的平方根
  3. 一个“Internal”牵扯出的代码泄露,阿里云独家回应
  4. 图片路径上传的配置问题
  5. vhdl变量赋初值_5.5 C++自动变量
  6. duilib消息事件产生和分发解释
  7. Fedora最小化安装后没有ifconfig命令
  8. 服务器mbr文件丢失吗,硬盘中了MBR病毒不要急,一款工具帮你搞定,保证数据不丢失!...
  9. 换5G手机别着急!雷军:再等等,我们不赚钱
  10. 界面放大_Beachtek推出RED摄影机低噪前置放大器DXA-RED
  11. 一个 8 岁的“前端老人”
  12. Git入门(本地使用)
  13. 第 14 章 SMS
  14. redhat官方文档下载方法
  15. word退出时,提示”更改会影响共用模板normal.dotm“的处理办法
  16. 笔记本电脑(PC)序列号查询
  17. 牛客网——Java刷题篇
  18. h2o java,H2O AutoML入门开发简介
  19. POI实现Excel模板下载
  20. 中龍鸿业分享理财产品净值1是什么意思?依据净值怎样算预期收益

热门文章

  1. 单机杀毒软件仅是企业信息安全的时尚毛衣
  2. Dev控件使用 - 皮肤
  3. DotNetNuke: System.Security.Cryptography.CryptographicException: Bad Data
  4. repeater用法一步一步详讲,用来绑定和显示数据信息
  5. C++ 测量程序运行时间 任务管理看内存
  6. golang中的time详情
  7. golang的makefile编写
  8. z = x++ - --y * b/a;
  9. 结构型模式:外观模式
  10. 转 使用putty从linux主机上面往windows主机下面拷贝文件