📜  BrowserStack 面试经历 |第 2 组(编码问题)(1)

📅  最后修改于: 2023-12-03 15:13:43.249000             🧑  作者: Mango

BrowserStack 面试经历 |第 2 组(编码问题)

摘要

本次面试是一道编码问题,面试官给了一段非常简单的递归函数代码,让我找出其中的错误并进行修改。

问题描述

以下为原始的代码,实现的功能是将一个字符串翻转输出。

public class ReverseString {
  public static String reverse(String str) {
    if (str.length() == 1) {
      return str;
    }
    return reverse(str.substring(1)) + str.charAt(0);
  }
}
解决方案

在复习了递归的工作原理之后,我很快就看出了问题:因为递归方法的返回值类型是字符串,所以递归函数中的str.charAt(0)应该被转换为字符串类型。修改后的代码如下所示:

public class ReverseString {
  public static String reverse(String str) {
    if (str.length() == 1) {
      return str;
    }
    return reverse(str.substring(1)) + String.valueOf(str.charAt(0));
  }
}

在修改后的代码中,我使用了String.valueOf()方法将字符类型转换为字符串类型。

结论

虽然这道题并不算很难,但是这次面试给了我很好的思考机会。同时,我也意识到了,即使是非常简单的代码,一个小小的错误也有可能导致程序崩溃。因此,我会在以后的日常工作中更加仔细地审查自己的代码,避免潜在的错误。