【发布时间】:2014-06-13 06:26:08
【问题描述】:
我正在尝试编写一个简单的方法,它接受一个字符串并返回该字符串的最小字母。例如,给定字符串“basic”,应返回“a”。
这是我想出的代码。目前我收到了 OutOfMemoryError。您还会注意到我尝试使用递归,但我也愿意接受不使用递归的建议。
public static String smallestLetter(String str) {
if (str.length() == 1)
return str.substring(0);
else if (str.charAt(0) < str.charAt(1))
return smallestLetter(str.substring(0) + str.substring(2,str.length()));
else
return smallestLetter(str.substring(1,str.length()));
}
请告诉我哪里出了问题以及我可以做些什么来解决它。谢谢!
【问题讨论】:
-
为什么要使用递归呢?只需迭代并保留对最小值的引用。
-
你需要阅读substring的javadoc。
substring(0)不会像你想的那样做。
标签: java string if-statement recursion methods