第一个独特字符位置-LintCode

原创 2017年11月14日 19:52:55

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

样例:
给出字符串 s = “lintcode”,返回 0。
给出字符串 s = “lovelintcode”,返回 2。

#ifndef C646_H
#define C646_H
#include<iostream>
#include<string>
#include<map>
using namespace std;
class Solution {
public:
    /*
    * @param s: a string
    * @return: it's index
    */
    int firstUniqChar(string &s) {
        // write your code here
        if (s.empty())
            return -1;
        map<char, int> m;
        //若字符第一次出现m[i]为其位置,否则m[i]置为-1
        for (int i = 0; i < s.size(); ++i)
        {
            if (m.find(s[i]) == m.end())
                m[s[i]] = i;
            else
                m[s[i]] = -1;
        }
        int pos = INT_MAX;
        //求m中value的非负最小值
        for (auto c : m)
        {
            if (c.second >= 0 && c.second < pos)
                pos = c.second;
        }
        return pos == INT_MAX ? -1 : pos;
    }
};
#endif
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

剑指offer---连续子数组的最大和、第一个只出现一次的字符的位置

举几个例子: 数组:[1, -2, 3, 5, -3, 2]应返回8. 数组:[-9, -2, -5, -3, -4]应返回-2. public class FindGreate...

《剑指offer》——第一个只出现一次的字符位置

T: 题目描述 在一个字符串(1

剑指Offer——(34)第一个只出现一次的字符位置

在一个字符串(1

剑指offer----第一个只出现一次的字符位置----java实现

在一个字符串(1字符串长度,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始。 如果从头开始让每一个字符都与其后面的字符相比较,当第一个出现一次的字符,就结束...
  • snow_7
  • snow_7
  • 2016年07月07日 17:32
  • 851

【剑指Offer】第一个只出现一次的字符位置

问题描述在一个字符串(1

剑指Offer--035-第一个只出现一次的字符位置

链接 牛客OJ:第一个只出现一次的字符位置 九度OJ:http://ac.jobdu.com/problem.php?pid=1283 GitHub代码: 035-第一个只出现...
  • gatieme
  • gatieme
  • 2016年05月04日 23:54
  • 1135

找出字符串中第一个只出现过一次的字符和位置

题目:找出字符串中第一个只出现过一次的字符和位置 比如:abcebad 只出现过一次的第一个字符应该是c,第3个。 @左耳朵耗子 大哥说的算法如下:        int[] pos...
  • lazy_p
  • lazy_p
  • 2013年07月31日 20:22
  • 3579

lintCode | 198.丢失的第一个正整数

题目 给出一个无序的正数数组,找出其中没有出现的最小正整数。 样例 如果给出 [1,2,0], return 3 如果给出 [3,4,-1,1], return 2 我的思路使用...

lintcode -- 丢失的第一个正整数

给出一个无序的正数数组,找出其中没有出现的最小正整数。 您在真实的面试中是否遇到过这个题?  Yes 样例 如果给出 [1,2,0], return 3 ...

LintCode 第一个错误的代码版本

第一个错误的代码版本代码库的版本号是从 1 到 n 的整数。某一天,有人提交了错误版本的代码,因此造成自身及之后版本的代码在单元测试中均出错。请找出第一个错误的版本号。 你可以通过 isBadVer...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第一个独特字符位置-LintCode
举报原因:
原因补充:

(最多只允许输入30个字)