• 添加字符--全国模拟(三)


    [编程题] 添加字符

    时间限制:1秒
    空间限制:32768K
    牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。
    而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,羊羊就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。
    牛牛可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问牛牛对A串添加完字符之后,不相等的位数最少有多少位? 
    输入描述:
    第一行为字符串A,第二行为字符串B,A的场地小于等于B的长度,B的长度小于等于50.字符均为小写字母。
     
     
    输出描述:
    输出一个整数表示A串添加完字符之后,不相等的位数最少有多少位?
     
    输入例子:
    abe cabc
     
    输出例子:
    1
     
    解题思路:本题是采用暴力搜索的方法。
    针对a字符串,让它的首位分别与b的0位到n2-n1位对其,进行比较,求出最大的位相等数目,然后不等数目 = n2 - (n2-n1+result) 个
    例如:abc  与 topabcoder
    abc
    topabcoder    相等数目为0
    abc
    topabcoder    相等数目为0
      abc
    topabcoder    相等数目为0
       abc
    topabcoder    相等数目为3
        abc
    topabcoder    相等数目为0
         abc
    topabcoder    相等数目为0
          abc
    topabcoder    相等数目为0
           abc
    topabcoder    相等数目为0
    因此result = 3  count = n2 - (n2-n1+result) = 10 - (10-3+3) =0
    即abc 变为topabcoder正好与b相同
     
    注意点:两字符串相等情况需要单独进行处理,直接按位比较,输出n2-相等数目即可。
     
    #include <iostream>
    #include <string.h>
    using namespace std;
     
    int main()
    {
        string a;
        string b;
        while(cin>>a>>b)
        {
            int equal = 0;
     
            int result = 0;
     
            int count = 0;
            int n1 = a.size();
            int n2 = b.size();
             
            if(n1 == n2)
            {
                for(int i=0;i<n1;i++)
                {
                    if(a[i] != b[i])
                    {
                        count++;
                    }
                }
                cout<<count<<endl;
            }
            else
            {
                for(int i=0;i<=n2-n1;i++)
                {
                    int k = i;
                    for(int j=0;j<n1;j++)
                    {
                        if(b[k] == a[j])
                        {
                          
                            equal++;
                        }
                        k++;
                    }
                    result = max(result,equal);
                    equal=0;
                }
                count = n2 - (result + (n2 - n1));
                cout<<count<<endl;
     
     
            }
        }
    }
    

      

  • 相关阅读:
    pat00-自测5. Shuffling Machine (20)
    Spiral Matrix
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Best Time to Buy and Sell Stock II
    4Sum
    3Sum Closest
    3Sum
    MySQL存储过程、函数和游标
    Word Ladder
  • 原文地址:https://www.cnblogs.com/Czc963239044/p/7020508.html
Copyright © 2020-2023  润新知