1、输入一组单词(区分大小写),统计首字母相同的单词的个数,相
同的单词不累加,输出格式:“字母,个数”
input: I am a boy,you are a boy.
output:
I,1
a,3
b,1
y,1
代码:
#include <bits/stdc++.h>
using namespace std;vector<int> nums; // 存数int main()
{string s;getline(cin, s);// 分解单词vector<string> ans;int i = 0;while (i < s.size()) {for (int j = i; j <= s.size(); j++) {if (s[j] == ' ' || s[j] == ',' || s[j] == '.') {ans.push_back(s.substr(i, j-i));i = j+1;break;}}} for (string i : ans) {cout << i << endl;}set<string> se;for (string i : ans) {se.insert(i);}map<char,int> m;for (auto i : se) {m[i[0]]++;}for (auto it : m) {cout << it.first << ',' << it.second << endl;}
}
2、输入一组单词,(区分大小写),输出其字典排序。
input: Information Info Inform info Suite suite suit
output: Info Inform Information Suite info suit suite
代码:
#include <bits/stdc++.h>using namespace std;priority_queue<string,vector<string>,greater<string>> q;
int main()
{string s;while (cin >> s) {q.push(s);if (getchar() == '\n') break; }while (!q.empty()) {cout << q.top();if (q.size() > 1) cout << ','; q.pop();}return 0;
}
3、给一个字符串(aaaa(bbbb(cccc,dddd),eeee(ffff)))该字符串
表明的是各个人的层次关系。
比如aaaa是bbbb和eeee的领导,bbbb是cccc和dddd的领导。
现输入一个名称,比如ffff,要求输出其领导关系
input: (aaaa(bbbb(cccc,dddd),eeee(ffff)))
output: aaaa>eeee>ffff
代码:
#include <bits/stdc++.h>// 遇到( 如果栈里面没有 ), 那么( 左边的字母就是一个祖先 前提是( 左边有字母
// 遇到)直接进栈
using namespace std;
int main()
{string s;stack<char> st;string tar;cin >> s >> tar;int idx = -1; // 目标人物的下标for (int i = 0; i < s.size(); i++) if(s[i] == tar[0]) {idx = i;break;} vector<string> ans; // 存储领导关系 ans.push_back(tar);for (int i = idx-1; i >= 0; i--) {if (s[i] == ')') st.push(s[i]); // 栈里面只存右括号else if (s[i] == '(') {if (i - 1 >= 0 && isalpha(s[i-1])) { // 左括号的左边是一个人if (st.size() == 0) ans.push_back(s.substr(i-4, 4));else st.pop();}}}for(int i = ans.size()-1; i >= 0; i--) {cout << ans[i];if (i != 0) cout << '>';}
}