概述
目录
问题 AM: 字符串变换
问题 AN: 字符串求反
问题 AO: 字符串转化为整数(附加代码模式)
问题 AP: 字符串匹配(朴素算法)-附加代码模式
问题 AQ: 求解最长首尾公共子串-附加代码模式
问题 AR: 算法4-7:KMP算法中的模式串移动数组-附加代码模式
问题 AS: 数据结构作业03 -- 改进的nextVal向量
问题 AT: 算法4-6:字符串匹配算法执行次数比较(朴素、KMP、改进的KMP)-附加代码模式
问题 AM: 字符串变换
内存限制:128 MB时间限制:1.000 S
评测方式:文本比较命题人:liuyong
提交:1649解决:1229
返回比赛提交提交记录侧边提交
题目描述
定义字符串的变换规则如下:
- 将其中任意一个字母替换为另一个
- 把最后一个字母删除
- 在尾部添加一个字母
给定两个字符串A和B,根据上面的规则,将A变成B,最少需要多少步操作?
输入
输入包括3行,
第一行包括两个小于1000的正整数m和n,分别表示两个字符串的长度,
接下来两行每行1个字符串,每个字符串仅由大写字母组成
输出
输出最小的操作步数
样例输入 复制
4 3
WXYZ
WXY
样例输出 复制
1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n;
cin>>m>>n;
char a[1005],b[1005];
for(int i=0;i<m;i++)
cin>>a[i];
for(int j=0;j<n;j++)
cin>>b[j];
int minlen=min(m,n);
int ans=0;
for(int i=0;i<minlen;i++)
if(a[i]!=b[i])
ans++;
ans+=max(m,n)-minlen;
cout<<ans;
}
问题 AN: 字符串求反
内存限制:128 MB时间限制:1.000 S
评测方式:文本比较命题人:liuyong
提交:4035解决:2407
返回比赛提交提交记录侧边提交
题目描述
给定一个长度不超过100的字符串,求其长度,并将其反转后输出
输入
输入包括一行长度不超过100的字符串,字符串仅由小写字母组成
输出
输出包括2行,第一行为字符串长度,第二行为字符串反转后输出结果。
样例输入 复制
hello
样例输出 复制
5
olleh
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
cout<<s.length()<<endl;
for(int i=s.length()-1;i>=0;i--)
cout<<s[i];
}
问题 AO: 字符串转化为整数(附加代码模式)
内存限制:128 MB时间限制:1.000 S
评测方式:文本比较命题人:liuyong
提交:869解决:630
返回比赛提交提交记录侧边提交
题目描述
输入一个字符串,将其转化为整数后输出,本题为附加代码模式,main函数代码如下,将会自动附加在提交的代码后面。
输入
字符串s,最大长度为10个字符,每个字符可能是数字或者字母;
输出
如果字符串中包含字母,则无法转化为一个数字,输出failed
如果字符串中没有包含字母,则可以转化一个整数,将其实际结果输出。
注意如果字符串是“012”,转化为整数后输出应该是12
样例输入 复制
012
样例输出 复制
12
提示
函数声明如下所示:
#include <iostream>
#include <cstring>
using namespace std;
// 转换成功返回0,否则返回-1
int str2int(char str[], int &data){
// write your code
}
int main()
{
char str[11];
cin>>str;
int data, result;
result = str2int(str,data);
if(result == 0){
cout << data << endl;
}else{
cout << "failed" << endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int str2int(char str[],int &data)
{
int begin=0;
for(int i=0;str[i]!='