2023
考点:字符串string的用法
可参考这篇文章
思路:
常用函数:
string s;
getline(cin,s);//一行读入字符功能
string s3=s1+s2;//字符串的拼接
子串简写
思路:
对于字符串问题先考虑用暴力(双指针)是否能直接实现
1.暴力做法:
单词分析
易錯點:哈希表的存儲形式
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e3+10;
int h[maxn];//键-字符 值-次数
int main()
{
int m=0;
string s;
char c;
cin>>s;
for(int i=0;i<s.size();i++){
int t=s[i]-'a';//转化为数字存储:a--h[0] b--h[1]
h[t]++;//记录次数
}
for(int i='a';i<='z';i++){//遍历哈希表找最大值,并输出对应字符
//一一比较,这样你才可以找到对应字符
if(m<h[i-'a'])//转换成你所存储的形式
{
m=h[i-'a'];//转换成你所存储的形式
c=i;
}
}
cout<<c<<endl;
cout<<m<<endl;
// 请在此输入您的代码
return 0;
}
日期统计
思路:先求目标串,然后直接将目标串与输入的字符一一比对
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int num[105]={5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,8,6,1,8,3,0,3,7,9,2,7, 0, 5, 8,
8, 5, 7, 0, 9,9, 1, 9, 4, 4, 6, 8, 6, 3, 3, 8, 5, 1, 6, 3, 4, 6, 7, 0, 7, 8, 2, 7, 6, 8, 9, 5, 6, 5, 6, 1, 4, 0, 1,
0, 0, 9, 4, 8, 0, 9, 1, 2, 8, 5, 0, 2, 5, 3, 3};//模拟输入
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int c=0;
int main()
{
//1.确定寻找的字符串格式:y=2023 m=1-12 d=序列,不够补0
for(int i=1;i<=12;i++){
for(int j=1;j<=d[i];j++){
string str="2023";//定年
if(i<10) str+='0';//格式化
str+=to_string(i);//定月
if(j<10) str+='0';
str+=to_string(j);//定天
//2.在数组中一位位对比寻找
int n=0;//记录字符的序列下标
for(int k=0;k<100&&n<8;k++){
if(num[k-1]==str[n]-'0')
n++;
}
if(n>=8) c++;
}
}
cout<<c<<endl;
return 0;
}