一只猪


私信TA

用户名:TuT99

访问量:11748

签 名:

拥有良好的积累,并且一直在路上,我相信自己有无限的可能

等  级
排  名 70
经  验 10251
参赛次数 6
文章发表 68
年  龄 21
在职情况 学生
学  校 哔哩哔哩大学
专  业 计算机科学与技术

  自我简介:

代码解析:

使用了哈希表 unordered_map 来统计每个字符的出现次数。

首先,定义了一个函数 findFirstUniqueChar,它的输入参数是一个字符串 s,表示要查找的字符串。函数返回第一个仅出现一次的字符。

在函数内部,创建了一个哈希表 count,用于存储每个字符的出现次数。然后,使用一个循环遍历字符串 s 中的每个字符,并在哈希表 count 中增加对应字符的计数。

接下来,再次遍历字符串 s 中的每个字符,对于每个字符,检查其在哈希表 count 中的计数。如果计数为1,则说明该字符是第一个仅出现一次的字符,立即返回该字符。

如果没有找到仅出现一次的字符,那么最后返回一个特定的标记字符 'no',表示没有出现次数只有一次的字符。

在 main 函数中,我们首先读入输入的字符串 s。

然后,我们调用 findFirstUniqueChar 函数来查找第一个仅出现一次的字符,并将结果存储在变量 result 中。

最后,我们输出结果字符 result。



参考代码:

#include <iostream>

#include <string>

#include <unordered_map>

using namespace std;


char findFirstUniqueChar(const string& s) {

    unordered_map<char, int> count;


    // 统计每个字符的出现次数

    for (char ch : s) {

        count[ch]++;

    }


    // 找到第一个仅出现一次的字符

    for (char ch : s) {

        if (count[ch] == 1) {

            return ch;

        }

    }


    return 'no';

}


int main() {

    string s;

    cin >> s;


    char result = findFirstUniqueChar(s);


    cout << result << endl;


    return 0;

}


 

0.0分

19 人评分

  评论区

#include <iostream>
#include <cstring>
using namespace std;

int main()
{	
	char ch[100000];
	int x, a[26] = { 0 }, y = 1;
	cin >> ch;
	x = strlen(ch);
	for (int j = 0; j < x; j++)
	{
		a[ch[j] - 97]++;
	}
	for (int i = 0; i < 26; i++)
	{
		if (a[i] == 1)
		{
			cout << ch[i];
			break;
		}
	}
	if (y == 0)
	{
		cout << "no";
	}
	return 0;
}这个哪里出问题了啊?
2024-06-08 11:04:20
用std::unordered_set也可以实现吧
2024-04-19 23:10:20
return 'no';  应该不对吧
2024-03-05 19:58:16
代码已经改正
2023-07-24 22:45:52
  • «
  • 1
  • »