认真的王老师

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。