第一个只出现一次的字符
题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
提交链接:点击
思路:
利用map容器。其中key为字符,value为该字符在字符串中出现的次数。遍历一次字符串可以得到,时间复杂度为O(n)。
再次遍历一个字符串,若找到在字符串中第一个出现次数为1的字符,返回其序号;否则,返回-1。
代码:
class Solution { public: int FirstNotRepeatingChar(string str) { map<char,int> result; int len=str.length(); for(int i=0;i<len;i++){ //遍历整个str,将每个字符对应出现的次数存入map result[str[i]]= ++result[str[i]]; } for(int i=0;i<len;i++){ if(result[str[i]]==1){ //找到第一个出现次数为1的字符 return i; break; } } return -1; } };
非学无以广才,非志无以成学! 【Magic_chao】
posted on 2018-10-21 18:47 Magic_chao 阅读(111) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步