文章目录
函数
1.gets()
读取一行字符串,可以读取空格
gets(char s[]);
2.puts()
输出字符串
puts(char s[]);
3.strcpy()
把字符串s复制到字符串t,后面的’\0’也会补到字符串t后面
strcpy(char t[],char s[]);
4.strncpy()
把字符串s中以s+i地址为起点的长度为n的字符复制到t中,这里t的后面不会有’\0’
strncpy(char t[],char s[]+i,n);
5.strcat()
把字符串s接到字符串t的后面
strcat(char t[],char s[]);
6.strcmp()
比较字符串t和字符串s的大小,按ASCII值大小自左向右逐个字符比较;
如果t==s,返回0;
如果t>s, 返回>0的正数;
如果t<s, 返回<0的负数;
int strcmp(char t[],char s[]);
7.strstr()
1).查找子串t 在s中的位置,查找到了返回地址,否则返回NULL;
2).子串的定义:任意连续的字符组成的字符串。
strstr(char s[],char t[]);
8.strlen()
求字符串长度
strlen(char s[]);
9.strlwr()
将字符串中的大写字母转化为小写字母
strlwr(char s[]);
10.strupr()
将字符串中的小写字母转化为大写字母
strupr(char s[]);
11.排序
按字典序进行排序:
1). 对c语言char s[]排序,sort(s,s+n);
2). 对c++的string s排序,sort(s.begin(),s.end());
c++
1.substr()
两种用法:string s;
方法1:
string s="Abcd";
string ans=s.substr(1,3);//从下标为1开始截取长度为3位 ans="bcd";
方法2:
string s="Abcd";
string ans=s.substr(3);//从下标为3开始截取到末尾 ans="d";
2.reverse()反转函数
头文件#include< algorithm >
1.反转字符串string
string s="ABCD";
reverse(s.begin(),s.end() );//s="DCBA"
2.反转数组char s[]
char s[4]={'a','b','c','d'};
reverse(s,s+4);//s="dcba"
3.反转vector
vector<int> v;
reverse(v.begin() ,v.end() );
3.to_string
将int整数转化为string字符串
4.stoi
将string字符串转化为int值
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int x=611;
string s=to_string(x);//"611"
int y=stoi(s); //611
cout<<s<<endl<<y;
return 0;
}
5.string字符串转char 字符串
s.c_str()
6.s.find()
查找字符 在string中的位置,返回下标
string s; s.find(x)
7.tolower()/toupper()
分别为转为小写字母,转为大写字母
题目
撸串串
LH 撸串串
时间限制: 1.000 Sec 内存限制: 128 MB
题目描述
LH 和妹子去撸串。
LH 想撸 n 根串,每个串的长度为 d,LH 想找出 n 根串都有的一个子串,使得这个子串的长度最大。
请聪明的你帮帮 LH 来撸串吧。
输入
第一行给出两个正整数 n,d,表示 LH 有 n 个串,每个串的长度都为 d。
输出
输出一行一个整数表示 n 个串的最长公共子串长度。
样例输入 Copy
3 6
aabcab
abcaab
bcabca
样例输出 Copy
4
提示
对于 20% 的数据,n=1。
对于 50% 的数据,n≤5,d≤5。
对于 100% 的数据,n≤30,d≤30。
#include<iostream>
#include<cstring>
using namespace std;
char s[33][33];
char t[33];
int main()
{
int n,d;cin>>n>>d;
for(int i=0;i<n;i++) scanf("%s",s[i]);
int ans=0;
for(int i=0;i<d;i++)//确定子串起始点位置
{
for(int j=1;j<=d-i;j++)//确定子串的长度
{
strncpy(t,s[0]+i,j);
t[j]='\0';
int f=0;
for(int r=1;r<n;r++)
{
if(strstr(s[r],t)==NULL)
{
f=1;break;
}
}
if(!f&&strlen(t)>ans)
ans=strlen(t);
}
}
cout<<ans;
return 0;
}