leetcode string 第一个只出现一次的字符

O

问题

解决方案

代码



/*
思路: 这种带次数的数组和字符串问题最好的方法就是采用hashtable去解决,如果条件限制比较多的话,就可以结合双指针去解决。

我们看这个问题发现其只是统计出现一次的字符, 一个hash+ 加逻辑判断就可以解决。 注意map 是有序的, 按照序列大小去排序了。 我们要用hash。

-  define hashtable , make all data into hash  table.
-   loop to search what value is equal 1  return 
*/


class Solution {
    
    
public:
   int FirstNotRepeatingChar(string str) {
    
    
       unordered_map<char,int> need;
       for(int i = 0; i < str.size(); i++){
    
    
           
           need[str[i]]++;
         
       }
       for(char c: str){
    
    
           
           if(need[c]==1){
    
    
               
               for(int i= 0;i<str.size();i++){
    
    
                   
                   if(str[i]==c) return i;
               }
           }
       }
       return -1;
       
   }
};










总结与反思

  1. 通过这道题理解了hash 和map的遍历。 map里面顺序按照key排好了,因此直接遍历的话和插入时候顺序是不一样的,想要保持顺序只能通过查key的大小去找,自身遍历的话不会存原始的顺序。

猜你喜欢

转载自blog.csdn.net/liupeng19970119/article/details/114178295