在Java中递归地反转一个句子

时间:2012-10-22 17:54:19

标签: java recursion

我想递归地反转一个句子,下面是我的下面的代码。我想知道我照顾的其他基地案件。对于基本情况,如果string为null,应该如何处理?

public String reverse(String s) {
int n = s.indexOf(' ');
if(n == -1)
    return s;
return reverse(s.substring(n+1))+" "+s.substring(0,n);

}  

2 个答案:

答案 0 :(得分:2)

null的反面是null,所以很容易:

if(s == null) return null;

因为您的方法有可能返回null,所以,我还会在引用return语句中的值并尝试追加它之前进行一些空检查。所以,像... ...

String reversed = reverse(s.substring(n+1));
if(reversed != null) return reverse + " " + s.substring(0,n);
else return s;

其他一切看起来都不错。您不应该需要任何其他基本案例。当然,这将完全按原样反转句子,包括标点符号和案例信息。如果你想做这种事情,将需要更加艰苦的处理。

为了确保适当的大写和小写结构,我可能会在你的正常基础情况下做这样的事情:

if(n == -1) {
    s = s.toLowerCase();
    String firstLetter = new String(s.charAt(0));
    s = s.replaceFirst(firstLetter, firstLetter.toUpperCase());
    return s;
}

标点符号变得更复杂一些,特别是如果您的结尾时段,感叹号或问号不仅仅是。

答案 1 :(得分:0)

在您的情况下,如果字符串为null,则可以返回空字符串(“”)。返回null将要求您在调用函数中处理null,如果您错过了一个案例,则可能会遇到NullPointerException