在字符串中删除特定的字符

声明:本片文章为阅读何海涛网易日志后,自己用java实现后的学习总结。

何海涛日志:http://zhedahht.blog.163.com/blog/static/25411174200801931426484/

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.””aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

思路:这道题目其实比较简单,在何海涛的日志中用的都是C/C++,我这里用的是java,思路都是一样的,但是因为不同的语言,实现的细节方面就有些不同,因为在java中,String的内容是不能改变的,虽然我们写代码的时候,觉得可以改变,但是实际上java是新创建了一个String,所以不能像何海涛日志中写的那样去修改,当然如果参数为char数组就另当别论了。我这里传的参数是String,所以在代码里面我又新建了一个StringBuffer作为字符缓存,在C/C++里面,一个char只占一个字节,最多包含256个字符,但是java中一个char占两个字节,所以我这里直接用HashSet的特性,元素不能重复。

代码:

/**
 * 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
 * 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。
 * @author hongbin.gao
 *
 */

public class DeleteChars {
	public static void main(String[] args){
		String str1 = "They are students.";
		String str2 = "aeiou";
		String result = deleteChars_1(str1,str2);
		System.out.println(result);
	}
  
	public static String deleteChars_1(String str1,String str2){
		int length_1 = str1.length();
		int length_2 = str2.length();
		
		Set<Character> set = new HashSet<Character>();
		int i=0;
		while(i<length_2){
			set.add(str2.charAt(i));
			i++;
		}
		
		StringBuffer strBuf = new StringBuffer();
		
		i=0;
		int index = 0; //index保存到目前为止str1中一共有几个字符是在str2中的
		while(i<length_1){
			if(!set.contains(str1.charAt(i))){
				strBuf.append(str1.charAt(i));
			}
			i++;
		}
		return strBuf.toString();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值