关于字符串 --java
这是在杭电上做一道水题时发现的,挺不错,写下了分享一下
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相关推荐
- java html字符串,java字符串方法
java中如何将字符型转换字符串 java中有很多方法可以将字符型转化为字符串. 这是代码 package com.test;public class Test {public static void ...
- java循环左一_左旋转字符串(Java)-循环Index方式
左旋转字符串(Java)-循环Index方式 题目要求 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循 ...
- 蓝桥杯 基础练习VIP FJ的字符串 java
蓝桥杯 基础练习VIP FJ的字符串 java 题目 题目描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = " ...
- java字符数组转化为字符串_java字符数组转字符串,java数组转字符串
字符串转数组 使用Java split() 方法 split() 方法根据匹配给定的正则表达式来拆分字符串. 注意: . . | 和 * 等转义字符,必须得加 \\.多个分隔符,可以用 | 作为连字符 ...
- java字符数组转字符串,java数组转字符串
字符串转数组 使用Java split() 方法 split() 方法根据匹配给定的正则表达式来拆分字符串. 注意:..|和*等转义字符,必须得加\.多个分隔符,可以用|作为连字符. // 字符串转数 ...
- java 图片 base64_java实现图片转base64字符串 java实现base64字符串转图片
java 图片转base64字符串.base64字符串转图片,具体内容如下 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64 ...
- java双等号比较字符串,Java与两个字符串==比较是错误的?
==运算符比较对象引用,而不是String的值. 要比较String的值,请使用String.equals方法: "231".equals(parts[0]); Java中的任何其 ...
- 基于Base64的图片转字符串-java和C#互通问题
前一段时间做了一个小项目,把一张图片传到服务器端,功能很简单,服务器端用.net MVC4实现的,客户端是winform程序. 昨天领导说客户端要移植一班Android程序,就花了点时间做了一个,传的 ...
- 杭电oj2072,2091字符串java实现
2072题目链接 思路:输入String,使用字符串分割,分割成小的字符数组,使用java的List储存不同单词,每次比较若全部不同则存入,返回List长度注意:不要用数组,数组长度无法改变并且数组处 ...
- 算法训练 最长字符串 java
算法训练 最长字符串 时间限制:1.0s 内存限制:512.0MB 求出5个字符串中最长的字符串.每个字符串长度在100以内,且全为小写字母. 样例输入 one two three four five ...
最新文章
- 2021-07-23 图像分割
- 基于快速原型模型建立商业呼叫中心SPOMP的应用研究
- 【译】 Stealing the funds of all HTC EXODUS 1 users (HTC 区块链钱包安全漏洞分析)
- redis面试精华指南pdf
- PostgreSQL Frontend/Backend protocol (通信协议)
- 如何在虚拟机中安装kali linux
- 解决 spring mvc 3.0 结合 hibernate3.2 使用tx:annotation-driven声明式事务无法提交的问题(转载)...
- Spring框架----AOP的概念及术语
- Linux基础知识-文件管理
- MySQL数据库的一些基本语法
- java session使用_Nginx+tomcat实现session共享
- in front of 与in the front of区别
- android 人脸识别边框_虹软人脸识别 - Android Camera实时人脸追踪画框适配
- SLAM十四讲中的第五讲点云拼接
- ios用xib实现三等分以及多等分思路
- 某天是星期几 + 三目运算符的一些错误操作解释
- 【TIC6657 DSP学习笔记】02 RTSC平台配置组件创建
- 固态变 SATAFIRM S11
- 面试了一个 46 岁的程序员,思绪万千
- 跑 Dimp 测试的一些记录