2 条题解
-
1
如果会 c++ STL容器 的map的话会很好做
关于map
map 是 C++ STL 中的关联容器,它存储的是键值对(key-value pairs),并且会根据键(key)自动排序。在本题中,我们使用 map<char, int> 来统计每个字符出现的次数。
基本特点:
自动排序:map 会根据键的值自动进行升序排序
唯一键:每个键在 map 中只能出现一次
快速查找:基于红黑树实现,查找效率为 O(log n)
在本题中的应用:
charCount[c]++:统计字符 c 出现的次数
如果 c 不存在,会自动创建并初始化为 0
然后执行 ++ 操作
charCount[c] == 1:检查字符 c 是否只出现一次
关于时间复杂度
map 查找是 O(log n)
AC code
#include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; map<char, int> charCount; for (char c : s) { charCount[c]++; } for (char c : s) { if (charCount[c] == 1) { cout << c << endl; return 0; } } cout << "no" << endl; return 0; } -
0
太简单了!!!
这道题,
我们可以在大循环里套两个循环来判断,
因为我们必须跳过
a[i],不然就一定会有重复的,for(int i=0;i<a.size();i++){ bool s=0; for(int j=i+1;j<=a.size();j++){ if(a[i]==a[j]){ s=1; break; }else if(i!=0){ for(int j=i-1;j>=0;j--){ if(a[i]==a[j]){ s=1; break; } } } }if(s==0){ cout<<a[i]; return 0; } }然后,在写没有的情况,
然后就是AC代码,
#include<bits/stdc++.h> using namespace std; int main(){ string a; getline(cin,a); for(int i=0;i<a.size();i++){ bool s=0; for(int j=i+1;j<=a.size();j++){ if(a[i]==a[j]){ s=1; break; }else if(i!=0){ for(int j=i-1;j>=0;j--){ if(a[i]==a[j]){ s=1; break; } } } }if(s==0){ cout<<a[i]; return 0; } }cout<<"no"; return 0; }
- 1
信息
- ID
- 4560
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- (无)
- 递交数
- 71
- 已通过
- 37
- 上传者