题解 | #名字串生成I# java

名字串生成I

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param str1 string字符串
     * @param str2 string字符串
     * @return string字符串
     */
    public String gcdOfStrings (String str1, String str2) {
        // write code here
        if (!(str1 + str2).equals(str2 + str1)) {
            return "";
        }

        int gcdLength = gcd(str1.length(), str2.length());
        return str1.substring(0, gcdLength);
    }

    private int gcd(int a, int b) {
        return b == 0 ? a : gcd(b, a % b);
    }
}

Java语言

主要考察以下知识点:

  1. 字符串拼接和比较
  2. 最大公约数
  3. 字符串的基本操作

代码的文字解释:

  1. 定义了一个名为 gcdOfStrings 的函数,接受输入参数 str1 和 str2(两个字符串)。
  2. 先检查两个字符串的拼接是否相等,通过将 str1 和 str2 拼接起来,然后比较拼接后的结果是否相等。如果不相等,直接返回空字符串,因为不存在满足条件的最长子串。
  3. 如果拼接相等,使用 gcd 函数来计算 str1 和 str2 的长度的最大公约数。这个函数采用了欧几里得算法,计算两个数的最大公约数。
  4. 返回 str1 的前 gcdLength 长度的子串作为最长子串,因为这是满足条件的最长公共子串。
  5. 代码较为简单,其实就是个欧几里得算法。
全部评论

相关推荐

评论
2
收藏
分享

创作者周榜

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