查找字符串中只出现一次字符的以一个字符和位置

struct str_info
{
	unsigned int idx;
	unsigned int cnt;
	unsigned char val;
	str_info()
	{
		idx = 0;
		cnt = 0;
	}
};
int FirstNotRepeatingChar(string str) {
	int len = str.length();
	if(len < 0 || len > 10000)
		return 0;
	char *p = &str[0];
	int id = 0;
	str_info str_myInfo[0x80];
	while(*p != '\0')
	{
		str_myInfo[*p].idx = id++;
		str_myInfo[*p].cnt++;
		str_myInfo[*p].val = *p;
		p++;
	}

	char *pStr = &str[0];
	while((*pStr) != '\0')
	{
		if(str_myInfo[*pStr].cnt == 1)
		{
			return str_myInfo[*pStr].idx;
		}
		pStr++;
	}
	return 0;
}

主要是将字符本身作为一个数组的下标,以此来记录其出现的次数和在整个字符串中的位置。

发布了42 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wangyhwyh753/article/details/79175013
今日推荐