zoukankan      html  css  js  c++  java
  • 第一个只出现一次的字符

    在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).

    思路1:

    利用数组模拟哈希,将字符转化为整数(字符-0) (计算ascii)
    将每个字符转换为数字,作为数组的下标,值为出现的次数
    第一次遍历统计次数,
    第二次遍历判断是否为1,是的话返回

     1 class Solution {
     2 public:
     3     int FirstNotRepeatingChar(string str) {
     4 //        vector<int> vec(300,0);
     5         int len = str.size();
     6         if (len <= 0)
     7             return -1;
     8         vector<int> vec(300,0);
     9         int i;
    10         for(i = 0;i < len; i++)
    11         {
    12             vec[str[i]-0]++;
    13         }
    14         for(i = 0; i < len; i++)
    15         {
    16             if (vec[str[i]-0] == 1)
    17                 return i;
    18         }
    19         return -1;
    20     }
    21 };

    第二种:直接用,map容器

     1 class Solution {
     2 public:
     3     int FirstNotRepeatingChar(string str) {
     4         int len = str.size();
     5         if (len <= 0)
     6             return -1;
     7         map<char, int> map1;
     8         int i;
     9         for(i = 0; i< len; i++)
    10         {
    11             map1[str[i]]++;
    12         }
    13         for(i = 0; i < len; i++)
    14         {
    15             if(map1[str[i]] == 1)
    16                 return i;
    17         }
    18         return -1;
    19     }
    20 };
  • 相关阅读:
    (最小路径覆盖) poj 1422
    (匈牙利算法) hdu 2119
    (匈牙利算法) hdu 4185
    (匈牙利算法) hdu 2063
    (匈牙利算法)hdu 1281
    (匈牙利算法DFS)hdu 3729
    (01 染色判奇环) hdu 3478
    (多重背包)poj 1276
    (判断欧拉回路)poj 1368
    (差分约束) hdu 1384
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12464702.html
Copyright © 2011-2022 走看看