基础编程题目集—— 7-29 删除字符串中的子串

23 篇文章 1 订阅
21 篇文章 0 订阅

1 题目要求

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。

输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。

输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

2 样例

输入样例:
Tomcat is a male ccatat
cat

输出样例:
Tom is a male

3 分析

(1) 思路1 :使用子串subStr 对字符串进行分割,分割得到的剩余串为结果,——
但其实这样是有问题的,

(2)问题在,如样例所示,ccatcat最终消失,说明在去掉ccatat中间的cat后,ccatat,没有停止直接输出,而是继续删除剩余的c at。所以应当设置一个循环,每次剔除cat后,继续检查剩余串是否包含cat,直到剩余串不再包含cat为止。
(3)有别于(1)中提出的方法,可以使用替换函数,将子串替换为""

(4)注意:本题没有要求 输出时剔除两侧的空格

4 代码

方法1 使用split(subStr+"+")

import java.util.Scanner;
class Main
{
	public static String delSubString(String str,String subStr)
	{
		//str=str.trim();
		String[] s=str.split(subStr+"+");
		String ss=new String();
//		string s=str.replaceAll(subStr,"");
		for(int i=0;i<s.length;i++)
		{
		//	System.out.println(s[i]);
			ss=ss+s[i];
		}
//		System.out.print(s);
		return ss;
	}
	public static void main(String[] args) 
	{
		Scanner sc=new Scanner(System.in);
		String str=sc.nextLine();
		String subStr=sc.nextLine();
		while(str.contains(subStr))
		{
			str=delSubString(str,subStr);			
		}
		System.out.println(str);

	}
}

结果最长嵌套超时

方法2:使用replace(subStr,"")

import java.util.Scanner;
class Main
{
	public static String delSubString(String str,String subStr)
	{
		String s=str.replace(subStr,"");
		return s;
	}
	public static void main(String[] args) 
	{
		Scanner sc=new Scanner(System.in);
		String str=sc.nextLine();
		String subStr=sc.nextLine();
		while(str.contains(subStr))
		{
			str=delSubString(str,subStr);			
		}
		System.out.println(str);
	}
}

5 总结

String 函数的灵活使用
str.split(正则表达式)
str.replace(subStr,newSubStr)
str.contains(subStr)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值