C++求字符串第一次只出現一次的字符
//求字符串中第一次只出現一次的字符。
#include
#include
#define _SIZE_ 255
using namespace std;
struct Node
{
int index;//存儲下標。
int num;//存儲個數。
Node() :index(-1), num(0){}
};
char Grial(char *str)
{
Node node[_SIZE_];//如果只考慮26個字符就不需要這麼多空間。
int slen = strlen(str);
int i = 0;
int mix = 0x7fffffff;
for (; i < slen; i++)
{
node[str[i]].index = i;//下標保存。
node[str[i]].num++;//保存個數。
}
for (i = 0; i < _SIZE_; i++)
{
if (node[i].num == 1)
{
mix = mix>node[i].index ? node[i].index : mix;
//求出第一次只出現一次的下標。
}
}
return str[mix];
//總共的時間復雜度是n(遍歷的一遍)+m(總共出現一次的總個數)。
//空間復雜度,開辟了一組額外的節點空間來存儲數據。
}
int main()
{
char *p = "1222345678234543";
cout<