对称字符串
输入 | 输出 |
---|---|
1 | A |
2 | ABA |
3 | ABACABA |
4 | ABACABADABACABA |
#include <stdio.h>
#include <string.h>
char res[5000000];
int main() {
int n;
scanf("%d", &n);
int len = 0;
for (int i = 1; i <= n; ++i) {
strcat(res+len+1, res);//从末尾后一位开始拷贝字符串(留一位给中间新增的数)
res[len] = 'A' + i - 1;
len = strlen(res);
}
printf("%s\n", res);
return 0;
}
寻找字符串
计算第二次输入的字符串在第一次输入的字符串中出现的次数
输入1 | 输入2 | 输出 |
---|---|---|
i miss you! | you | 1 |
ossosso | osso | 2 |
#include<iostream>
#include<string>
using namespace std;
int main() {
int count=0;
string str1, str2;
getline(cin, str1);//读入带空格的字符串
getline(cin, str2);
for (int i = 0; i <=str1.length()-str2.length() ; i++) {
if (str1.compare(i, str2.length(), str2) == 0) {
count++;
}
}
cout << count << endl;
return 0;
}
字符串中A的数量
输入一个不含空格的字符串,统计其中A的数量:
- 输入:AabdkeaoektA
- 输出:2
#include<iostream>
#include<string>
using namespace std;
int main() {
string s;
int count = 0;
cin >> s;
for (int i = 0; i < s.length(); i++) {
if (s[i]=='A'){
count++;
}
}
cout << count << endl;
return 0;
}
最长的名字
先输入名字的个数,依次读入各名字,输出最长的名字
- 输入:
3
Tom
Gaofei
Lobs - 输出:
Gaofei
#include<iostream>
#include<string>
using namespace std;
//返回最长的字符串函数
string getMax(string array[], int count) {
int max = array[0].length();
string mm = array[0];
for (int i = 1; i <count ; i++) {
if (array[i].length() > max) {
max = array[i].length();
mm = array[i];
}
}
return mm;
}
int main() {
int n;
cin >> n;
string a[1000];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
//不调用函数的做法
/*int max=a[0].length();
string m=a[0];
for (int i = 1; i < n; i++) {
if (a[i].length() > max) {
max = a[i].length();
m = a[i];
}
}
cout << m << endl;*/
cout<<getMax(a,n)<<endl;
}
字符串改写(每个字母变为下一字母)
将字符串中的所有大小写字母都改该字母的下一个字母。如:最后一个小写字母 z 改写成字母 a;最后一个大写字母 Z 改写成 A,其他字符依照原有顺序不变。
- 输入
ABCDZ123abcdefz - 输出
BCDEA123bcdefga
#include<iostream>
#include<string>
using namespace std;
int main() {
string s;
cin >> s;
for (int i = 0; i < s.length(); i++) {
if (s[i] == 'Z') {
s[i] = 'A';
}
else if (s[i] == 'z') {
s[i] = 'a';
}
else if((s[i]>='A'&&s[i]<'Z')||(s[i] >= 'a'&&s[i] < 'z')){
s[i]++;
}
}
cout << s << endl;
}
大数的奇偶性判断
输入很大的数字(int存储不了),判断是否为偶数:
#include<iostream>
#include<string>
using namespace std;
int main() {
string s;
cin >> s;
int l = s.length();
int last = (int)s[l - 1];
if (last % 2 == 0) {
cout << "YES" << endl;
}
else {
cout << "NO" << endl;
}
字符反转
输入一个字符串,将其反转输出
#include<iostream>
#include<string>
using namespace std;
int main() {
string s;
cin >> s;
for (int i = s.length()-1; i >= 0; i--) {
cout << s[i];
}
return 0;
}
最后一个单词
给定一个包含空格和字符的字符串,返回最后一个单词的长度,单词指不包含空格的字符串
注意排除结尾空格(结尾空格不计入最后一个单词字符的长度)
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
int num=0;
getline(cin,s);
int len=s.length();
//空串
if (len == 0) {
num = 0;
}
//不要用循环去遍历,这样会考虑每个单词间的空格和开头空格
//用while只需要识别最后是否是空格,不是就自动跳出
else {
while (s[len - 1] == ' ') {
len--;
}
//排除完结尾空格只需要识别是否是字符,是就加一
while (s[len - 1] != ' ') {
len--;
num++;
}
}
cout << num << endl;
return 0;
}