《LeetCode系列》---删除两个字符串中相同的字符

本章节将通过面向对象的思想来解决该问题。

目录

一、题目描述

二、思路分析

 三、代码实现

代码示例


一、题目描述

题目:

        给定两个字符串,分别是s1和s2,写一个方法来返回s1和s2字符串中不同字符的字符串。

例如:

字符串s1="Hello!My name is Xiao Ming!"

字符串s2="Hello,Good!"

那么返回后的字符串为"My nam is Xia Ming"


二、思路分析

分析:

要想删除字符串s1和s2中相同的字符,我们需要遍历这两个字符串。

找到两个字符串中不相同的字符,然后将其拼接成一个新的字符串即可。

但接下来就有一个问题,要怎么将提取出来的字符拼接成一个字符串呢❓

代码思路:

我们可以利用数据结构当中的顺序表ArrayList实现List接口,通过ArrayList内重写List的各种方法来进行操作。

ArrayList类底层其实是一个数组。

我们可以把字符串中不同的字符提取出来,增添进创建的一个List类型的引用变量里(数组)。

《LeetCode系列》---删除两个字符串中相同的字符_第1张图片

 该代码中会用到add()和contains()这两个方法即可。

add()是增添元素

contains() 是判断当前创建的引用内是否存在要判定的元素

我们只需遍历一个字符串s1,然后判定s2字符串中是否遍历的这些字符,如果没有就将该字符增添进实例化的引用对象里去。


 三、代码实现

代码示例

public class Main {
    public static List func(String s1, String s2){
        if(s1==null||s2==null){
            return null;
        }
        if(s1.length()==0||s2.length()==0){
            return null;
        }
        List arr=new ArrayList<>();
        for (int i = 0; i < s1.length(); i++) {
            //通过charAt提取s1每一个下标的字符
            char ch=s1.charAt(i);
            //此处contains是判断s1字符串中的元素是否在s2中有包含
            if(!s2.contains(ch+"")){
                arr.add(ch);
            }
        }
        return arr;
    }
    public static void main(String[] args) {
        String s1="Hello!My name is Xiao Ming!";
        String s2="Hello,Good!";
        List ret=func(s1,s2);
        for (char ch:ret) {
            System.out.print(ch);
        }
    }
}

(1)首先定义一个返回类型为List的方法,参数是两个字符串s1和s2.

注意:此处是一个泛型类,Character是char的包装类作为实参.

(2)因为返回类型是List,那么在方法内部,我们得先定义一个List 类型的引用变量,并实例化ArrayList<>();

 

(3)因为ArrayList底层其实是一个数组,那么就可以开始进行字符串遍历.

通过循环遍历字符串s1中的每一个字符,用arr中的contains()方法判断字符串s2中是否包含字符串s1中的字符。

《LeetCode系列》---删除两个字符串中相同的字符_第2张图片

contains()方法内的参数是CharSequence (字符序列)类型,因此在传参的时候对字符ch拼接一个空字符串,将其转变为字符串

《LeetCode系列》---删除两个字符串中相同的字符_第3张图片

(4)最后返回增添好后的arr即可。《LeetCode系列》---删除两个字符串中相同的字符_第4张图片

 (5)主方法main中,创建一个相同类的引用变量ret调用该方法。

之后通过for-each 循环,对里面的字符进行输出

《LeetCode系列》---删除两个字符串中相同的字符_第5张图片

(6)为了使代码更具严谨性,可以写两个if语句,判断这两个字符串是否合法(长度是否为0或字符串为空null)

《LeetCode系列》---删除两个字符串中相同的字符_第6张图片

 代码运行结果:

《LeetCode系列》---删除两个字符串中相同的字符_第7张图片


《LeetCode系列》---删除两个字符串中相同的字符_第8张图片

今天对删除两个字符串中相同的字符问题,到这里就结束了。

如果对各位有所帮助的话,还希望能支持一下,谢谢!

你可能感兴趣的:(LeetCode,java,数据结构,leetcode)