-3

如何在不使用 Java 循环的情况下找到字符串中的单词数?

4

5 回答 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
  1. 您可以拆分字符串以获取所有单词。
  2. 应用过滤器/正则表达式来删除不必要的标点符号、字符等。
  3. 然后将完整的数组放入一个集合中以获得唯一的单词。

在上述每个步骤中,您都可以获得您正在寻找的答案,了解您的要求如何使用单词(唯一或重复)

于 2012-11-09T18:28:26.950 回答