认真的王老师
时间: 1ms 内存:128M
描述:
王老师很认真,特别是错别字,王老师总是一眼看出来。但是王老师觉得这个工作很无聊,很是浪费时间,把这个任务交给你。
给你两个相同长度的字符串,都是小写字母。第一行是你写的,第二行是标准的答案,你写的和标准答案不一样就是错别字,你得告诉王老师错别字的个数和位置。
输入:
输入第一行为一个整数 n,其中 1<=n<=100
第二行为长度为 n 的字符串 s1
第三行为长度为 n 的字符串 s2
输出:
输出第一行为错别字的个数
第二行为每个错别字的位置,从小到大输出。用空格分开,结尾不要添加空格
示例输入:
5
aelho
hello
示例输出:
2
1 4
提示:
参考答案(内存最优[1120]):
#include <stdio.h>
int main()
{
int n=0,i=0,sum=0,jie[100]={0};
char s1[100],s2[100];
scanf("%d",&n);
scanf("%s",s1);
scanf("%s",s2);
for (i=0;i<n;i++){
if (s1[i] != s2[i]){
jie[sum++]= i;
}
}
printf("%d\n",sum);
if (sum != 0){
for (i=0;i<sum-1;i++){
printf("%d ",jie[i]+1);
}
printf("%d",jie[sum-1]+1);
}
return 0;
}
参考答案(时间最优[1]):
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
char s1[n];
char s2[n];
int count = 0;
for(int i=0; i<n; i++){
cin >> s1[i];
}
for(int i=0; i<n; i++){
cin >> s2[i];
}
for(int i=0; i<n; i++){
if(s1[i] != s2[i]){
count++;
}
}
cout << count << endl;
for(int i=0; i<n; i++){
if(s1[i] != s2[i]){
cout << i+1 << " ";
}
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。