7AA0C796-03DA-40FC-ABF5-92B6A352499F.jpeg

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

思路

本题要求解第一个不重复字符串出现的位置,可以使用hash来存放每个字母出现的次数
第一次遍历字符串,记录每个字符出现的次数。
无标题-2021-09-08-1025.png
第二次遍历字符串,找到第一个出现次数为1的字符下标。如果不存在,则返回-1。
无标题-2021-09-08-1025 2.png

代码

  1. // C++ Version
  2. class Solution {
  3. public:
  4. int firstUniqChar(string s) {
  5. int mp[26] = {0};
  6. for(int i = 0; i < s.size(); i++){
  7. mp[s[i] - 'a']++;
  8. }
  9. for(int i = 0; i < s.size(); i++){
  10. if(mp[s[i] - 'a'] == 1){
  11. return i;
  12. }
  13. }
  14. return -1;
  15. }
  16. };
  1. // Go Version
  2. func firstUniqChar(s string) int {
  3. var mp [26]int
  4. for i := 0; i < len(s); i ++{
  5. mp[s[i] - 'a']++;
  6. }
  7. for i := 0; i < len(s); i ++{
  8. if mp[s[i] - 'a'] == 1{
  9. return i;
  10. }
  11. }
  12. return -1;
  13. }