1009 说反话
#include <cstdio>int main() {char sen[80][80];int num=0;while(scanf("%s",sen[num])!=EOF){num++;}for (int i = num-1; i > 0; --i) {printf("%s ",sen[i]);}printf("%s\n",sen[0]);return 0;
}
字符串连接
#include <iostream>
using namespace std;int main() {string a,b;while(cin>>a>>b){cout<<a<<b<<endl;}return 0;
}
首字母大写
#include <iostream>
#include <cctype>
using namespace std;bool is_blank(char i){if(i==' '||i=='\t'||i=='\r'||i=='\n') return true;else return false;
}int main() {string str;while(getline(cin,str)){bool is_start=true;for (int i = 0; i < str.length(); ++i) {if(is_blank(str[i])) is_start= true;else if(is_start){if(islower(str[i])){str[i]= toupper(str[i]);}is_start= false;}}cout<<str<<endl;}return 0;
}
字符串的查找删除
参考链接:
https://cloud.tencent.com/developer/ask/sof/110559246
- isspace( )判断字符c是否为空白符,空白符指空格、水平制表、垂直制表、换页、回车和换行符
- 注意大小写比较和输出
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
using namespace std;string removeSpace(const string& input){string res;for(char c:input){if(c!=' ') res.push_back(c);}return res;
}int main() {string shortStr,inputStr;getline(cin,shortStr);transform(shortStr.begin(), shortStr.end(), shortStr.begin(), ::tolower);while(getline(cin,inputStr)){if(shortStr.empty()){cout<<inputStr;return 0;}string temp=inputStr;transform(temp.begin(),temp.end(),temp.begin(),::tolower);size_t pos=0;while((pos=temp.find(shortStr,pos))!=string::npos){temp.erase(pos,shortStr.length());inputStr.erase(pos,shortStr.length());}string resStr= removeSpace(inputStr);cout<<resStr<<endl;}return 0;
}
单词替换
#include <iostream>
#include <string>
using namespace std;int main() {string str,str1,str2;while(getline(cin,str)){getline(cin,str1);getline(cin,str2);size_t pos=0;while((pos=str.find(str1,pos))!=string::npos){str.replace(pos,str1.length(),str2);pos=pos+str2.length();}cout<<str<<endl;}return 0;
}
字符串去特定字符
#include <iostream>
using namespace std;int main() {string s,c;while(getline(cin,s)){getline(cin,c);if(c.empty()){cout<<s<<endl;continue;}size_t pos=0;while((pos=s.find(c,pos))!= string::npos){s.erase(pos,c.length());}cout<<s<<endl;}return 0;
}
数组逆置
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;int main() {string str;while(getline(cin,str)){reverse(str.begin(), str.end());cout<<str<<endl;}return 0;
}
比较字符串
#include <iostream>
using namespace std;int main() {int m;string str1,str2;cin>>m;for (int i = 0; i < m; ++i) {cin>>str1>>str2;if(str1.length()>str2.length()){cout<<str1<<" is longer than "<<str2<<endl;}else if(str2.length()>str1.length()){cout<<str1<<" is shorter than "<<str2<<endl;}else{cout<<str1<<" is equal long to "<<str2<<endl;}}return 0;
}
【字符串】回文串
#include <iostream>
#include <algorithm>
using namespace std;int main() {string str;getline(cin,str);string tempStr=str;reverse(tempStr.begin(),tempStr.end());if(tempStr==str) cout<<"YES"<<endl;else cout<<"NO"<<endl;return 0;
}
编排字符串
#include <iostream>
#include <queue>
#include <string>
using namespace std;int main() {int m;cin>>m;deque<string> names;string str;for (int i = 0; i < m; ++i) {cin>>str;names.push_front(str);if(names.size()>4){names.pop_back();}int count=1;for(const auto&name:names){cout<<count<<'='<<name;if(count<names.size()){cout<<' ';}count++;}cout<<endl;}return 0;
}