A - 雷同检测
#include <bits/stdc++.h>
using namespace std;
char a[210],b[210];
int main(){
gets(a);
gets(b);
int lena=strlen(a);
int lenb=strlen(b);
int min=lena<lenb?lena:lenb;
for(int i=0;i<min;i++){
if(a[i]==b[i])
cout<<i+1<<" ";
}
cout<<'\n';
return 0;
}
B - 首字母大写
#include <bits/stdc++.h>
using namespace std;
char a[100];
int main(){
gets(a);
int len=strlen(a);
if(a[0]>='a')
a[0]-=32;
for(int i=1;i<len;i++){
if(a[i-1]==' '||a[i-1]=='\n'||a[i-1]=='\t'||a[i-1]=='\r'){
if(a[i]>='a')
a[i]-=32;
}
}
puts(a);
return 0;
}
C - 大小写转换
#include <bits/stdc++.h>
using namespace std;
char a[100];
int main(){
while(scanf("%s",a)==1){
int len=strlen(a);
for(int i=0;i<len;i++){
if(a[i]>='a')
a[i]-=32;
}
puts(a);
}
return 0;
}
D - 数字反转
#include<stdio.h>
int main(){
long int a,sum=0;
scanf("%ld",&a);
int i=0,j=0,b[10],c,d,e;
if(a<0){
a=-a;
e=-1;}
if(a>0){
do{
b[i]=a%10;
i++;
j++;
a=a/10;
}
while(a!=0);
for(c=0;c<j;c++){
for(d=c;d<j-1;d++){
b[c]=b[c]*10;
}
sum+=b[c];
}}
if(e==-1)
sum=-sum;
printf("%ld",sum);
return 0;
}
E - 删除单词后缀
#include <bits/stdc++.h>
using namespace std;
char a[40];
int main(){
gets(a);
int len=strlen(a),flag=0;
if(a[len-1]=='r'&&a[len-2]=='e')
flag=2;
else if(a[len-1]=='y'&&a[len-2]=='l')
flag=2;
else if(a[len-1]=='g'&&a[len-2]=='n'&&a[len-3]=='i')
flag=3;
for(int i=0;i<=len-1-flag;i++)
cout<<a[i];
cout<<'\n';
return 0;
}
F - 判断字符串是否为回文
#include <bits/stdc++.h>
using namespace std;
char a[110];
int main(){
gets(a);
int len=strlen(a),flag=1;
for(int i=0;i<=len/2;i++){
if(a[i]!=a[len-1-i]){
flag=0;
break;
}
}
if(flag)
cout<<"yes";
else
cout<<"no";
cout<<'\n';
return 0;
}
G - 基础数据结构——栈(1)
#include <stdio.h>
#include <string.h>
#define n 1001
int main() {
char s[n], a[n];
while(gets(s)) {
int len,i,top = 0;
len= strlen(s);
for(i = 0; i < len; i++) {
if(s[i] == '(' || s[i] == '[' || s[i] == '{') {
a[++top] = s[i]; } else if(s[i] == ')') {
if(a[top] == '(') top--;
else { top++; break; } }
else if(s[i] == ']') {
if(a[top] == '[') top--;
else {
top++; break; } }
else if(s[i] == '}') {
if(a[top] == '{') top--;
else {
top++; break; } } }
if(top!=0)
printf("no\n");
else
printf("yes\n"); }
return 0; }
H - 字典序
#include <bits/stdc++.h>
using namespace std;
int main(){
string a,b;
cin>>a;
cin>>b;
if(a<b)
cout<<"YES"<<"\n";
else
cout<<"NO"<<"\n";
return 0;
}
I - 验证子串
#include <bits/stdc++.h>
using namespace std;
int main(){
string a,b;
cin>>a;
cin>>b;
int flag1=0,flag2=0;
flag1=b.find(a);
flag2=a.find(b);
if(flag1>0)
cout<<a<<" is substring of "<<b;
else if(flag2>0)
cout<<b<<" is substring of "<<a;
else
cout<<"No substring";
cout<<"\n";
return 0;
}
J - 子串查找
#include <bits/stdc++.h>
using namespace std;
const int mx=1e6;
int ne[mx+10],len1,len2;
char a[mx+10],b[1e6+10];
void get_next()
{
int j=-1,i=0;
ne[0]=-1;
while(i<len2)
{
if(j==-1||b[i]==b[j])
{
i++;
j++;
ne[i]=j;
}
else
j=ne[j];
}
}
void kmp()
{
int j=0,i=0;
int ans=0;
while(i<len1)
{
if(j==-1||a[i]==b[j])
{
++i;
++j;
}
else
j=ne[j];
if(j==len2)
{
j=ne[j];
ans++;
}
}
cout<<ans<<"\n";
}
int main()
{
gets(a);
gets(b);
len1=strlen(a);
len2=strlen(b);
if(len2>len1)
printf("0\n");
get_next();
kmp();
return 0;
}
K
#include <bits/stdc++.h>
using namespace std;
int ne[1010],len1,len2;
char a[1010],b[1010];
void get_next()
{
int j=-1,i=0;
ne[0]=-1;
while(i<len2)
{
if(j==-1||b[i]==b[j])
{
i++;
j++;
ne[i]=j;
}
else
j=ne[j];
}
}
void kmp()
{
int j=0,i=0;
int ans=0;
while(i<len1)
{
if(j==-1||a[i]==b[j])
{
++i;
++j;
}
else
j=ne[j];
if(j==len2)
{
j=0;
ans++;
}
}
printf("%d\n",ans);
}
int main()
{
while (scanf("%s",a)!=EOF){
if (a[0] == '#'&&strlen(a) == 1)break;
scanf("%s",b);
len1=strlen(a);
len2=strlen(b);
if(len2>len1)
cout<<"0\n";
get_next();
kmp();
}
return 0;
}
L - 最长回文子串
#include<stdio.h>
#include<string.h>
int main(){
char a[1000];
int i,j,n,x,y,max=1,z=1;
gets(a);
n=strlen(a);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(i+j>=n)break;
for(x=j,y=j+i;x<=y;x++,y--)
{
if(a[x]!=a[y])
z=0;
}
if(z==1){
z=i+1;
if(max<z)
max=z;
}
z=1;
}
}
printf("%d",max);
return 0;
}