题解 | #名字串生成I#

名字串生成I

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

  1. 题目考察的知识点

字符串,辗转相除法

  1. 题目解答方法的文字分析

由于str1和str2是由同一个子串p重复多次变成的,那么设mp为str1,np为str2。那么str1+str2和str2+str1皆为为(m+n)*p。所以,这两者相比较必然相等,否则返回"";设所求最长子串为t乘以p,则t乘以p即可以重复多次形成m乘以p,也可以形成n乘以p,那么所求的t是m,n的最大公约数。为此t乘以p.length也是m乘以p.length,n乘以p.length的最大公约数。用辗转相除法就可求出t乘以p。

  1. 本题解析所用的编程语言

java

  1. 完整且正确的编程代码
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str1 string字符串 
     * @param str2 string字符串 
     * @return string字符串
     */
    public String gcdOfStrings (String str1, String str2) {
         if(!(str1+str2).equals(str2+str1)){
            return "";
         }
         return str1.substring(0,gcd(str1.length(),str2.length()));
    }
    public int gcd(int slen1,int slen2){
        return slen2==0?slen1:gcd(slen2,slen1%slen2);
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
贪食滴🐶:你说熟悉扣篮的底层原理,有过隔扣职业球员的实战经验吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务