2 条题解
-
4
和上位同学写法撞了,不过判断状态更新则单词计数这个部分,可以有个小优化,即将初始状态设为待读入,每次更新为单词读入状态则计数,就不需要对原字符串进行修改了
#include<iostream> #include<string> using namespace std; int main(){ int a[1000]={0}; int f=1,k=0;//k记单词数,f=1为待读入单词状态,f=0为单词读入状态 string s; getline(cin,s); for(int i=0;i<s.size();i++){//遍历字符串 a[s[i]]++;//字母计次 if((s[i]==' '||s[i]==',')&&f==0) f=1;//若状态为读入单词,且开始读入' '或',',则更新状态为单词待读入 else if(s[i]!=' '&&s[i]!=','&&f==1){ f=0;//若状态为单词待读入且开始读入字母,则更新状态为单词读入 k++;//单词计数 } } cout<<k<<endl; for(char i='a';i<='z';i++)//遍历字母表 if(a[i]) cout<<i<<' '<<a[i]<<endl;//若该字母有计次则输出 }
- 1
信息
- ID
- 381
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 307
- 已通过
- 43
- 上传者