文字列に1回だけ現れる文字と位置を見つける

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 10,000以上のビュー

おすすめ

転載: blog.csdn.net/wangyhwyh753/article/details/79175013