如何在不使用 Java 循环的情况下找到字符串中的单词数?
问问题
2320 次
5 回答
3
如果要避免循环,则必须使用递归。
于 2012-11-09T18:27:14.067 回答
2
尝试这样的事情:
int words = new java.util.StringTokenizer(myString," ").countTokens();
没试过是否有效,但应该。
于 2012-11-09T18:29:23.030 回答
1
试试这个。这里绝对没有循环(假设String.length
不迭代String.substring
也不复制),甚至在幕后也没有,当然除了打印。
static int nSpaces ( String s ) {
int n = 0;
if ( s.length() > 0 ) {
if ( s.length() > 1 ) {
// Split it in half.
int center = s.length() / 2;
// Count each half.
n += nSpaces(s.substring(0, center))
+ nSpaces(s.substring(center));
} else {
// Just 1 character.
if ( s.charAt(0) == ' ' ) {
// It's a space.
n += 1;
}
}
}
//System.out.println(n+" spaces in '"+s+"'");
return n;
}
static int nWords ( String s ) {
return nSpaces (s) + 1;
}
public static void main(String args[]) {
String test = "Now is the time for all good men to come to the aid of the party.";
System.out.println("nWords(\""+test+"\") = "+nWords(test));
}
于 2012-11-09T20:02:09.960 回答
0
1)您可以使用split
, 然后获取结果数组的长度,但这会将任何非空格(例如数字)计为单词
2) 使用正则表达式匹配空格之间的任何内容(您可以调整任何内容)。
于 2012-11-09T18:26:07.063 回答
0
- 您可以拆分字符串以获取所有单词。
- 应用过滤器/正则表达式来删除不必要的标点符号、字符等。
- 然后将完整的数组放入一个集合中以获得唯一的单词。
在上述每个步骤中,您都可以获得您正在寻找的答案,了解您的要求如何使用单词(唯一或重复)
于 2012-11-09T18:28:26.950 回答