题解 | #名字串生成I#

名字串生成I

https://www.nowcoder.com/practice/6544721abdd54f1f938f2a98ac03922a

知识点

字符串,gcd

思路

为了求两个字符串的最大公共前缀子串,首先这个子串长度需要是两个字符串长度的最大公约数。所以,我们先对str1和str2求最大公约数k,然后在两个字符串的前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 gcdOfStrings(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 "";
        }
        return ans;
    }
};
全部评论

相关推荐

06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务