在不使用数组和特殊方法(例如split
方法的情况下),我该如何编写以下方法:输入int表示假定为正数的数字n
,并且输出字符串包含输入字符串的第n个单词,从第一个单词开始,以一个空格隔开。
这是我到目前为止所拥有的:
public static String nthWord(int n, String s1) {
StringBuilder sb = new StringBuilder();
for(int x = 0; x < s1.length(); x = x + n) {
sb.append(s1.charAt(x));
}
return sb.toString();
}
例如,输入:
HW2.nthWord(3,“零一二三四有五六七”)
应输出:
“零三六”
但是我当前的方法输出:
“ zon t heo vs v”
答案 0 :(得分:2)
您需要检查字符串的每个字符以找到空格以识别单词。因此,您只是一个开始,但是您需要:
答案 1 :(得分:0)
只需跟踪最后一个字符和单词索引即可。逻辑很简单。
代码:
public static String nthWord(int n,String s1)
{
StringBuilder sb = new StringBuilder();
char lastChar = ' ';
int wordIndex = -1;
for(int i = 0 ; i < s1.length(); i++)
{
char c = s1.charAt(i);
if(c != ' ' && lastChar == ' ')
{
wordIndex++;
if(wordIndex > 0 && ((wordIndex % n) == 0))
{
sb.append(' ');
}
}
if(c != ' ' && ((wordIndex % n) == 0))
{
sb.append(c);
}
lastChar = c;
}
return sb.toString();
}