美文网首页lintcode
646. 第一个独特字符位置

646. 第一个独特字符位置

作者: 和蔼的zhxing | 来源:发表于2017-11-20 23:09 被阅读17次

给出一个字符串。找到字符串中第一个不重复的字符然后返回它的下标。如果不存在这样的字符,返回 -1。
样例
给出字符串 s = "lintcode",返回 0。
给出字符串 s = "lovelintcode",返回 2。
1.最容易想到的一个思路,双层遍历,对于每一个字符,遍历整个字符串,如果能找到相同的(且不能是当前字符串),则不合要求,直接跳出内层循环检查下一个,只要找到第一个单独的,没有重复的,则可以返回索引,要注意一种情况是不存在这样的字符怎么呢,那就是遍历了所有的字符都没有找到这样一个字符,我们同样返回-1.

int firstUniqChar(string &s) {
       if(s.empty())
       return -1;
      int num=0;
       for(size_t i=0;i<s.size();i++)   //对每个字符都遍历所有字符
       {
           for(size_t j=0;j<s.size();j++)   
           {
               if(s[j]==s[i]&&i!=j) 
               //如果有相等的,而且不是本字符,那么说明有相同的,考察下一个字符
               {   num++;
                   break;
                   
               }
               if(j==s.size()-1)   //遍历到最后一个也没有找到,那说明这个就是符合要求的,返回
               {return i;
               }
           }
       }
       if(num=s.size())   //如果字母都找过了也没有,则返回-1
         return -1;
        // write your code here
    }

2.另一种思路一开始想的是可以把每个字符放在一个哈希表中,但这个要求hash_map是按照插入顺序的,但是c++STL中给出的无序版本的map也并非是按照插入的顺序来的,所以这种方法用hash_map是不好做了,当然我可以用vector<pair<char,int>>来做,find函数,正好可以返回vector的迭代器。这种的复杂度并不比上面想的那个要小,所以也不写了。

相关文章

  • 646. 第一个独特字符位置

    给出一个字符串。找到字符串中第一个不重复的字符然后返回它的下标。如果不存在这样的字符,返回 -1。样例给出字符串 ...

  • 面试之JavaScript String对象常用方法

    length 返回字符串的长度(字符数) 返回指定位置的字符,第一个字符位置为0 返回字符串第一个字符的 Unic...

  • 前端基本功:JS必记知识点+案例(七)字符

    根据字符返回位置 跟 charAt() 相反的 根据 字符 返回的是 位置 1 /返回前面起第一个字符...

  • 字符串对象方法

    charAt(index) charAt() 方法可返回指定位置的字符。 第一个字符位置为 0, 第二个字符位置为...

  • JavaScript复习——字符串操作

    字符串操作 str.charAt() 返回指定位置的字符。第一个字符位置为 0, 第二个字符位置为 1。 str....

  • python正则表达式-待续

    函数: *match():匹配字符串开始位置*search():扫描字符串,找到第一个位置*findall():找...

  • JavaScript parseFloat() 函数转换规则

    parseFloat() 函数也是从第一个字符(位置0)开始解析,直到遇到第一个无效的 float 字符或者字符串...

  • 字符串的排列

    思路:首先求出低一个位置所有可能的字符,即把第一个字符和后面的字符交换,第一个字符确定后,再确定第二个位置,也是执...

  • string字符串相关

    查找387 寻找第一个不重复的字符位置53 最大和子字符串35 寻找有序字符串插入位置27 删除指定元素2...

  • leetcode 28

    Implement strStr() 返回needle字符串在haystack字符串出现的第一个位置

网友评论

    本文标题:646. 第一个独特字符位置

    本文链接:https://www.haomeiwen.com/subject/knvbvxtx.html