这是在杭电上做一道水题时发现的,挺不错,写下了分享一下

http://acm.hdu.edu.cn/showproblem.php?pid=2072

这里我用了两种方法,参考大佬的,一个是list实现类,一个是用set框架

import java.util.*;public class Main {public static void main(String args[]) {Scanner sc=new Scanner(System.in);while(sc.hasNext()){int ans=0;boolean bre = false;String s=sc.nextLine();String b[]=s.split(" ");for(int i=0;i<b.length;i++)if(b[i].contains("#"))bre=true;if(bre)break;List list=new ArrayList();for(int i=0;i<b.length;i++){if(!list.contains(b[i]))list.add(b[i]);}if(list.contains("")){System.out.println(list.size()-1);}else System.out.println(list.size());}}
}

List list=new ArrayList();List是一个接口 

 这种方法比较常规,将字符串用“ ”分割,将每部分放在一个数组里边,然后通过判断是否重复,保存在List里边,最后通过判断list里边大小来输出结果,这里要注意的是字符串开头可能是“ ”,List无法识别,会记录大小的,所以要注意list.size()-1;

第二种方法:

_集合框架(HashSet存储字符串并遍历)

我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个equals()比较, 效率较低,哈希算法提高了去重复的效率, 降低了使用equals()方法的次数,当HashSet调用add()方法存储对象的时候, 先调用对象的hashCode()方法得到一个哈希值, 然后在集合中查找是否有哈希值相同的对象 ,如果没有哈希值相同的对象就直接存入集合,如果有哈希值相同的对象, 就和哈希值相同的对象逐个进行equals()比较,比较结果为false就存入, true则不存。就这题而言,就是重复的不存

代码如下:

import java.util.*;public class Main {public static void main(String args[]) {Scanner sc=new Scanner(System.in);while(sc.hasNext()){HashSet<String> hs=new HashSet<String>();String s=sc.nextLine();if(s.equals("#"))break;String b[]=s.split(" +");for(int i=0;i<b.length;i++)hs.add(b[i]);if(hs.isEmpty()){System.out.println("0");continue;}int c=0;if(s.charAt(0)==' ')System.out.println(hs.size()-1);elseSystem.out.println(hs.size());hs.clear();}}
}

  

转载于:https://www.cnblogs.com/ls-pankong/p/9819961.html

关于字符串 --java相关推荐

  1. java html字符串,java字符串方法

    java中如何将字符型转换字符串 java中有很多方法可以将字符型转化为字符串. 这是代码 package com.test;public class Test {public static void ...

  2. java循环左一_左旋转字符串(Java)-循环Index方式

    左旋转字符串(Java)-循环Index方式 题目要求 ​ 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循 ...

  3. 蓝桥杯 基础练习VIP FJ的字符串 java

    蓝桥杯 基础练习VIP FJ的字符串 java 题目 题目描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = " ...

  4. java字符数组转化为字符串_java字符数组转字符串,java数组转字符串

    字符串转数组 使用Java split() 方法 split() 方法根据匹配给定的正则表达式来拆分字符串. 注意: . . | 和 * 等转义字符,必须得加 \\.多个分隔符,可以用 | 作为连字符 ...

  5. java字符数组转字符串,java数组转字符串

    字符串转数组 使用Java split() 方法 split() 方法根据匹配给定的正则表达式来拆分字符串. 注意:..|和*等转义字符,必须得加\.多个分隔符,可以用|作为连字符. // 字符串转数 ...

  6. java 图片 base64_java实现图片转base64字符串 java实现base64字符串转图片

    java 图片转base64字符串.base64字符串转图片,具体内容如下 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64 ...

  7. java双等号比较字符串,Java与两个字符串==比较是错误的?

    ==运算符比较对象引用,而不是String的值. 要比较String的值,请使用String.equals方法: "231".equals(parts[0]); Java中的任何其 ...

  8. 基于Base64的图片转字符串-java和C#互通问题

    前一段时间做了一个小项目,把一张图片传到服务器端,功能很简单,服务器端用.net MVC4实现的,客户端是winform程序. 昨天领导说客户端要移植一班Android程序,就花了点时间做了一个,传的 ...

  9. 杭电oj2072,2091字符串java实现

    2072题目链接 思路:输入String,使用字符串分割,分割成小的字符数组,使用java的List储存不同单词,每次比较若全部不同则存入,返回List长度注意:不要用数组,数组长度无法改变并且数组处 ...

  10. 算法训练 最长字符串 java

    算法训练 最长字符串 时间限制:1.0s 内存限制:512.0MB 求出5个字符串中最长的字符串.每个字符串长度在100以内,且全为小写字母. 样例输入 one two three four five ...

最新文章

  1. 2021-07-23 图像分割
  2. 基于快速原型模型建立商业呼叫中心SPOMP的应用研究
  3. 【译】 Stealing the funds of all HTC EXODUS 1 users (HTC 区块链钱包安全漏洞分析)
  4. redis面试精华指南pdf
  5. PostgreSQL Frontend/Backend protocol (通信协议)
  6. 如何在虚拟机中安装kali linux
  7. 解决 spring mvc 3.0 结合 hibernate3.2 使用tx:annotation-driven声明式事务无法提交的问题(转载)...
  8. Spring框架----AOP的概念及术语
  9. Linux基础知识-文件管理
  10. MySQL数据库的一些基本语法
  11. java session使用_Nginx+tomcat实现session共享
  12. in front of 与in the front of区别
  13. android 人脸识别边框_虹软人脸识别 - Android Camera实时人脸追踪画框适配
  14. SLAM十四讲中的第五讲点云拼接
  15. ios用xib实现三等分以及多等分思路
  16. 某天是星期几 + 三目运算符的一些错误操作解释
  17. 【TIC6657 DSP学习笔记】02 RTSC平台配置组件创建
  18. 固态变 SATAFIRM S11
  19. 面试了一个 46 岁的程序员,思绪万千
  20. 跑 Dimp 测试的一些记录

热门文章

  1. 关于lwip中pbuf_alloc()内存申请函数
  2. python中的多线程、多进程
  3. 统计概率分布_概率统计中的重要分布
  4. 2020-07-28
  5. 在什么情况下,刘强东会丧失京东的控制权?
  6. 信用逾期3年是不是一定会坐牢?
  7. Linux-Android启动之Init进程前传
  8. 64位Ubuntu kylin 16.04搭建tftp服务器
  9. mysql导入数据库某张表_MSSQLServer2005 导出导入数据库中某张表的数据
  10. java getxxx_java的invoke与getMethod方法用法