C17-6.8字符串的应用
原题链接:38471.note12025-06-15 19:39:29
发布于:江苏
一、字符数组的比较
#include<iostream>
#include <cstring>
using namespace std;
int main(){
char a[] = "1222";
char b[] = "122";
//字符串的比较,按照ascii逐位比较,
// 返回值 0, 1, -1
cout << strcmp(a, b) << endl; //1
return 0;
}
#if 0
strlen() //实际长度
strcat("hello", "world")
strcpy("hello", "world")
strcmp() 比较,0, 1, -1
#endif
二、随堂练习题
1.回文字符串的判断
首尾往中间进行判断。
#include <bits/stdc++.h>
using namespace std;
int main() {
string s, S;
cin >> s;
int len = s.size(); //获取字符串 s 的长度
for (int i=len-1; i>=0; i--) { //将原字符串逆序存到新字符串 S 中
S += s[i]; //将s[i]拼接到S的末尾
}
if (s == S) { //判断反转后的字符串是否和原串相同
cout << "Yes";
} else {
cout << "No";
}
return 0;
}
2.特殊字符的熟悉
利用条件分支进行判断。
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
cin >> s;
for (int i = 0; i <= s.size() - 1; i++) {
if(s[i]=='+'){
s[i]='-';
}
else if(s[i]=='-'){
s[i]='+';
}
else if(s[i]=='*'){
s[i]='!';
}
else if(s[i]=='!'){
s[i]='*';
}
}
cout << s;
return 0;
}
3.统计字符
注意包含空格的输入方式,利用条件分支进行判断。
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
int l = 0, d = 0, o = 0;
getline(cin, s);
for(int i = 0; i <= s.size() - 1; i++){
if(s[i] != '?'){
if('0'<=s[i] && s[i]<='9') d++;
else if ('a'<=s[i] && s[i]<='z') l++;
else o++;
}
}
cout << "Letters=" << l << endl;
cout << "D=" << d << endl;
cout << "O=" << o << endl;
/*请输入代码*/
return 0;
}
4.大小写转换
大小写字母之间的差值是32,记住常见的字符ascii码即可。
#include<iostream>
using namespace std;
int main(){
string s;
cin >> s;
int len = s.size();
for (int i=0; i<len; i++){
if ('A'<=s[i] && s[i]<='Z'){
s[i] += 32;
}else if('a'<=s[i] && s[i]<='z'){
s[i] -= 32;
}
}
cout << s;
return 0;
}
5. 改变回文串
题目描述
小码君有一个字符串,他想要恰好改变一个字符,使得改变后的字符串是一个回文串。如果可以得到回文串则输出“YES”,否则输出“NO”。
输入格式
一个字符串 s(1≤∣s∣≤15)。
输出格式
如果可以得到回文串则输出“YES”,否则输出“NO”。
样例组
输入#1
abccaa
输出#1
YES
输入#2
abbcca
输出#2
NO
#include<iostream>
using namespace std;
int main(){
string s;
cin >> s;
int len = s.size(), cnt = 0;
for(int i=0, j=len-1; i<len/2; i++, j--)
{
if (s[i] != s[j]) cnt++;
}
if (len%2==1 && cnt == 0 || cnt == 1) cout <<"YES";
else cout <<"NO";
return 0;
}
这里空空如也
有帮助,赞一个