java - 确定句子中重复项数的程序

标签 java

代码:公共(public)类复制

{

public static void main(String[] args)throws IOException

  {

  System.out.println("Enter words separated by spaces ('.' to quit):");

  Set<String> s = new HashSet<String>();

  Scanner input = new Scanner(System.in);

  while (true)

  {

  String token = input.next();

  if (".".equals(token))

  break;

  if (!s.add(token))

  System.out.println("Duplicate detected: " + token);

  }

  System.out.println(s.size() + " distinct words:\n" + s);
 Set<String> duplicatesnum = new HashSet<String>();

String token = input.next(); 如果(!s.add( token )) { duplicatesnum.add( token ); System.out.println("检测到重复:"+ token);

System.out.println(duplicatesnum.size());

} } 输出是: 输入以空格分隔的单词('.' 退出): 一二一二。 检测到重复项:一个 检测到重复项:两个 2个不同的词: [二、一]

最佳答案

我假设您想知道不同重复单词的数量。您可以使用另一个 HashSet<String>对于重复项。

//Outside the loop
Set<String> duplicates = new HashSet<String>();

//Inside the loop
if (!s.add(token))
{
    duplicates.add(token);
    System.out.println("Duplicate detected: " + token);
}

//Outside the loop
System.out.println(duplicates.size());

此外,如果您关心每个单词的出现,请声明一个 HashMap<String, Integer>正如在其他帖子中提到的那样。

但是如果你想要所有重复单词的数量(没有不同),只需声明一个计数器:

//Outside the loop
int duplicates = 0;    

//Inside the loop
if (!s.add(token))
{
    duplicates++;
    System.out.println("Duplicate detected: " + token);
}

//Outside the loop
System.out.println(duplicates);

关于java - 确定句子中重复项数的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3059240/

相关文章:

java - 裁剪后如何从图库中选择图像并保存在应用程序中?

java - 使用 charAt 将大写字符串转换为小写

java - 无法在 Android 设备上调试我的应用程序

Java/JDBC – 多参数搜索最佳实践

Java OpenGL - 线框和实体模式

java - maven 不会在目标中替换属性文件中的占位符

java - GWT 问题,GWT.create(SomeClass.class) 抛出异常

java - 将 OOP java 转换为现代 C++ 代码、抽象方法和接口(interface)方法

java - 使用 DB2 的 JDBC 驱动程序时出现 ClassNotFoundException

java - 用于在tomcat中部署war文件的安装页面