标签:字符 return string Offer ++ 50 char frequency find
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例 1:
输入:s = "abaccdeff"
输出:'b'
示例 2:
输入:s = ""
输出:' '
===========================================================
使用了string的find方法,但是不清楚string中find方法是如何实现的,百度有人说是朴素算法,有人说是其他算法,总之很高效
class Solution { public: char firstUniqChar(string s) { for (int i = 0; i < s.size(); i++) { if (s.rfind(s[i]) == i&&s.find(s[i])==i) return s[i]; } return ' '; } };
不太喜欢这个方法,因为没有办法自己分析代码,之后看题解有人用map,感觉这个时间复杂度也很高效
class Solution { public: char firstUniqChar(string s) { unordered_map<int, int> frequency; for (char ch: s) { ++frequency[ch]; } for (int i = 0; i < s.size(); ++i) { if (frequency[s[i]] == 1) { return s[i]; } } return ' '; } };
但是运行时间比find要慢很多,讲道理应该不应该。。写STL的大神是真的牛×
标签:字符,return,string,Offer,++,50,char,frequency,find
来源: https://www.cnblogs.com/4jiu/p/15844354.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。