题解 | #名字串生成II#

名字串生成II

https://www.nowcoder.com/practice/a90b0c33344e4b8488fe0b376de3205d

知识点

字符串,lcm,gcd

思路

为了求两个字符串能够组成的最小大字符串,首先要确定这个大字符串的长度k,为

然后借助上一题的最大公共子串,即可还原出长度为k的最小大字符串

代码c++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str1 string字符串 
     * @param str2 string字符串 
     * @return string字符串
     */
     int gcd(int a,int b)
     {
        return b<=0?a:gcd(b,a%b);
     }
    string lcmOfStrings(string str1, string str2) {
        // write code here
        string ans;
        int k=gcd(str1.size(),str2.size());
        for(int i=0,j=0;i<k&&j<k;i++,j++)
        {
            if(str1[i]==str2[j])ans+=str1[i];
            else return "";
        }
        string t=ans;//暂时存储字符子串
        int a=(str1.size()*str2.size()/k);//最终字符串的长度
        a/=ans.size();//字符子串的个数
        for(int i=1;i<a;i++)
        {
           ans+=t;
        }
        return ans;
    }
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务