zoukankan      html  css  js  c++  java
  • 关于字符串 --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);
    		else
    			System.out.println(hs.size());
    	
    	hs.clear();
    	}
    
    }			
    }
    

      

  • 相关阅读:
    底部菜单栏之Fragment的详细介绍和使用方法
    Warm up 2
    如何做好一位资深的web前端工程师
    使用 HTML5 canvas 绘制精美的图形
    计算元素距离浏览器左边的距离
    [JSOI2016]独特的树叶
    【SDOI2009】Elaxia的路线
    【SCOI2009】最长距离
    【SCOI2009】围豆豆
    【AHOI2005】穿越磁场
  • 原文地址:https://www.cnblogs.com/ls-pankong/p/9819961.html
Copyright © 2011-2022 走看看