• [剑指Offer] 34.第一个只出现一次的数


    题目描述

    在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置

    【思路】当一个字符第一次出现的位置和它最后一次出现的位置相同,那么它就是只出现一次的数

     1 class Solution
     2 {
     3 public:
     4     int GetLastIndex(char c,string str)
     5     {
     6         for(int i = str.length() - 1; i >= 0; i --)
     7         {
     8             if(str[i] == c)
     9             {
    10                 return i;
    11             }
    12         }
    13         return -1;
    14     }
    15     int FirstNotRepeatingChar(string str)
    16     {
    17         if(str == "")    return -1;
    18         int id = -1;
    19         bool judge[str.length()];
    20         for(int i = 0; i < str.length(); i ++)
    21             judge[i] = false;
    22         for(int i = 0; i < str.length(); i ++)
    23         {
    24             id = GetLastIndex(str[i],str);
    25             if(id == i && !judge[i])
    26                 return i;
    27             judge[i] = judge[id] = true;
    28         }
    29         return -1;
    30     }
    31 };
  • 相关阅读:
    HDU 4472 Count DP题
    HDU 1878 欧拉回路 图论
    CSUST 1503 ZZ买衣服
    HDU 2085 核反应堆
    HDU 1029 Ignatius and the Princess IV
    UVa 11462 Age Sort
    UVa 11384
    UVa 11210
    LA 3401
    解决学一会儿累了的问题
  • 原文地址:https://www.cnblogs.com/lca1826/p/6513092.html
Copyright © 2020-2023  润新知