我需要一点帮助。我需要递归地编写此方法: public static int howManyChar (String s,char c),并且不使用子字符串方法和循环。
有什么想法吗?我被困在这一点上了。
public static int howManyChar (String s, char c)
{
int count = 0;
int lastChar = s.length()-1;
if (s.length()== 0)
return 0;
if (s.charAt(lastChar) == c)
{
count++;
}
我已经成功地使用了substring方法:
int count =0;
if (s.charAt(0)==c)
count++;
if (s.length()>1)
{
count+=howManyChar(s.substring(1), c);
}
return count;
但是我想不使用子字符串来编写代码。
发布于 2014-05-10 23:43:42
尝尝这个
public static int howManyChar (String s, char c) { if (s.length()==0) return 0; return s.charAt(0) == c ? 1 : 0 + howManyChar(s.substring(1), c); }
或者如果您不能使用substring方法
public static int howManyChar (String s, char c, int pos) { if (pos >= s.length()) return 0; return s.charAt(pos) == c ? 1 : 0 + howManyChar(s, c, ++pos); }
发布于 2017-05-14 14:00:44
我已经看过这里的一些答案,它们要么对于您的问题来说太复杂,要么使用子字符串,要么不使用基本的递归
您的解决方案应该是这样的。
function countChar(String a, char b, int i)
if(i==a.length)
return 0
else if(b ==a.charAt(i))
return 1 + function countChar(a, b, i+1)
else
return function countChar(a,b,i+1)
这部分代码就是循环。
function countChar(String a, char b, int i)
{
if(i==a.length)
{
return 0
}
else
{
//put here a print statement to see what happens.
// print charAt(i) or i itself
return function countChar(a, b, i+1) //<-- moving to the next index
}
}
学习这个循环。您应该使用charAt(i)。子字符串不是必需的..
为了满足需求,您可以将您的方法包装在另一个递归方法中。
function howManyChar(String a, Char b)
{
countChar(a, b, 0);
}
发布于 2014-05-10 23:50:45
public static int howManyChar (String s, char c)
{
index++;
if (s.length() == index)
return 0;
else if(s.charAt(index) == c)
return 1 + howManyChar(s, c);
else
return 0 + howManyChar(s, c);
}
现在这不是最好的解决方案,我有一个类级别的变量(index)来保存字符串中的位置。但是如果不使用子字符串,我想不出更好的方法。
https://stackoverflow.com/questions/23582900
复制相似问题