【发布时间】:2020-02-13 16:10:38
【问题描述】:
我正在尝试在 java 中反转一个完整的字符串
例如,Good morning,因此输出应返回 morning good。
我尝试了以下功能
public static String reverse(String s)
{
if (s.isEmpty())
return s;
//int n = 0;
return reverse(s.substring(1)) + s.charAt(0);
}
但上面的函数是将good morning 转换为gninrom doog。我的代码适用于每个字符,我如何使它适用于单词。任何提示或指南/解释将不胜感激。
我已经问过this 问题但没有解决我的问题
更新:
在@snr answer 和 @NathanHughes cmets 的帮助下尝试以下代码
public static String reverse(String s)
{
int s1 = s.indexOf(" ");
if (s1 != -1)
{
return reverse(s.substring(s1+1)) + s.substring(0,s1);
}
else
{
return "-1";
}
}
但是输出是
-1good
【问题讨论】:
-
如果你知道如何将字符串拆分成单词,你能从那里解决问题吗?您是否研究过如何将字符串拆分为单词?
-
s.substring(1)为您提供第一个字符为s的字符串。这不是你想要的。 -
@ScottHunter 你的意思是 s.split(" ");在我的情况下?
-
@M.普罗霍罗夫想多了,假设空格分隔单词。你的提示是:使用 indexOf 和 substring.
-
@M. Prokhorov:练习基本递归似乎是一个玩具问题,识别单词边界很有趣,但似乎与我对问题的解释没有直接关系。显然,如果我们将其扩展到 CJK 字符集,那么识别单词边界会变得非常困难。