列表

详情


OR89. 字符串问题

描述

小摩手里有一个字符串A,小拜的手里有一个字符串B,B的长度大于等于A,所以小摩想把A串变得和B串一样长,这样小拜就愿意和小摩一起玩了。
而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,小拜就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。
小摩可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问小摩对A串添加完字符之后,不相等的位数最少有多少位?

输入描述

第一行 为字符串A,第二行 为字符串B, A的长度小于等于B的长度,B的长度小于等于100。 字符均为小写字母。

输出描述

输出一行整数表示A串添加完字符之后,A B 不相等的位数最少有多少位?

示例1

输入:

abe
cabc

输出:

1

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2018-08-08

#include<stdio.h>
#include<string.h>

int main()
{
    char A[100],B[100];
    int a_len,b_len;
    int i,j,k,km=0;
    
    scanf("%s%s",A,B);
    a_len = strlen(A);
    b_len = strlen(B);
    
    for(i=0;i<=b_len-a_len;i++)
    {
        k=0;
        for(j=0;j<a_len;j++)
        {
            if(A[j]==B[j+i])
                k++;
        }
        if(k>km) km = k;
    }
        printf("%d\n",a_len-km);
}

C 解法, 执行用时: 2ms, 内存消耗: 224KB, 提交时间: 2019-06-13

#include <stdio.h>
#include <string.h>
int main()
{
    char A[100],B[100];
    int lena,lenb;
    int i,j,k,km=0;
    
    scanf("%s%s",A,B);
    lena=strlen(A);
    lenb=strlen(B);
    for(i=0;i<=lenb-lena;i++)
    {
        k=0;
        for(j=0;j<lena;j++)
        {
            if(A[j]==B[j+i])
            {
                k++;
            }
        }
        if(k>km)km=k;
    }
    printf("%d\n",lena-km);
}

上一题