关于字符串 --java

Posted 一世安然L

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于字符串 --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();
	}

}			
}

  

以上是关于关于字符串 --java的主要内容,如果未能解决你的问题,请参考以下文章

关于python的数据类型

关于js中的字符串方法和数组方法总结

关于解析字符串

关于字符串的两道题

关于字符串分割函数

C关于字符串操作的库函数实现总结