2944:单词替换:将由多个单词组成的字符串s中的所有a单词变为b单词
注意:所有都是以单词为单位,不是以子串为单位。顺便膜拜一下万能的stringstream!
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main()
{
int i=0;
string s,a,b,t,ans="";
getline(cin,s);
stringstream ss(s);
cin>>a;cin>>b;
while (ss>>t)
{
if (t==a)
ans+=b+" ";
else
ans+=t+" ";
}
cout<<ans<<endl;
return 0;
}
4104:单词翻转:输入一个句子(一行),将句子中的每一个单词翻转后输出
注意:
1、为了保持空格,不能用stringstream
2、循环内部遍历记得加i<s.length()的条件
#include<iostream>
#include<string>
using namespace std;
int main()
{
int i,j;
string s,t,ans="";
getline(cin,s);
i=0;
while (i<s.length())
{
t="";
for(;i<s.length()&&s[i]!=' ';i++)//注意i<s.length()
t+=s[i];
for (j=t.length()-1;j>=0;j--)
ans+=t[j];
for (;i<s.length()&&s[i]==' ';i++)
ans+=s[i];
}
cout<<ans<<endl;
return 0;
}
4030:统计单词数:输出单词在文章中出现的次数和第一次出现的位置。匹配单词时,不区分大小写
#include<iostream>
#include<string>
using namespace std;
int main()
{
int i,j,loca,count=0;
string a,s,t="";
cin>>a;
cin.ignore();
getline(cin,s);
for (i=0;i<a.length();i++)
t+=tolower(a[i]);
a=t;
i=0;
while (i<s.length())
{
t="";
for (;i<s.length()&&s[i]!=' ';i++)
t+=tolower(s[i]);
if (t==a && count==0)
{
count++;loca=i-a.length();
}
else if (t==a)
count++;
while(s[i]==' ')i++;
}
if (count==0)
cout<<-1;
else
cout<<count<<" "<<loca<<endl;
return 0;
}
2888:字符串中的数字:输入一个字符串,将其中是数字的字符提取出来,对它们进行从小到大排序
#include<iostream>
#include<string>
#include<vector>
#include<iomanip>
#include<ctype.h>
#include<algorithm>
using namespace std;
int main()
{
int i;
string s;
vector<int>ans;
while(getline(cin,s))
{
ans.clear();
for (i=0;i<s.length();i++)
if (isdigit(s[i]))
ans.push_back(s[i]-'0');
sort(ans.begin(),ans.end());
for (i=0;i<ans.size();i++)
cout<<setw(4)<<ans[i];
cout<<endl;
}
return 0;
}