比较java中的字符串并删除它们相同的字符串部分

Sno*_*ard 7 java algorithm

我和我有两个字符串:

s1="MICROSOFT"
s2="APPLESOFT"
Run Code Online (Sandbox Code Playgroud)

我需要比较字符串并从第二个字符串中删除重复的部分(总是朝向末尾).所以我应该把"MICROSOFT"和"APPLE"作为输出.

我已逐字符地比较了两个字符串.

               String s1 = "MICROSOFT";
               String s2 = "APPLESOFT";

               for(int j=0; j<s1.length(); j++)
               {
                   char c1 = s1.charAt(j);
                   char c2 = s2.charAt(j);

                   if(c1==c2)
                       System.out.println("Match found!!!");
                   else
                       System.out.println("No match found!");
               }
Run Code Online (Sandbox Code Playgroud)

它应检查字符串,如果两个字符串在字符串结尾之前具有相同的字符,那么我需要从第二个字符串中删除该冗余部分,在这种情况下为SOFT.但我想不出如何从这里开始.

可能会有更多重复...但我们必须只删除那些持续相同的重复.如果我有APPWWSOFT和APPLESOFT,我应该在第二个字符串中再次获得APPLE,因为我们得到的LE与WW之间不同

你能帮帮我吗?

Sno*_*ard 0

我绞尽脑汁后解决了我的问题。请随时纠正/改进/细化我的代码。该代码不仅适用于“MICROSOFT”和“APPLESOFT”输入,还适用于“APPWWSOFT”和“APPLESOFT”等输入(我需要从上述两个输入中的末尾删除连续的重复项 - SOFT)。我正处于学习阶段,我将不胜感激任何宝贵的意见。

public class test
    {           
        public static void main(String[] args)
        {
            String s1 = "MICROSOFT";
            String s2 = "APPLESOFT";

            int counter1=0;
            int counter2=0;

            String[] test = new String[100];
            test[0]="";

            for(int j=0; j<s1.length(); j++)
            {
                char c1 = s1.charAt(j);
                char c2 = s2.charAt(j);

                if(c1==c2)
                {
                    if(counter1==counter2)
                    {
                        //System.out.println("Match found!!!");
                        test[0]=test[0]+c2;
                        counter2++;
                        //System.out.println("Counter 2: "+counter2);
                    }
                    else
                        test[0]="";
                }
               else
               {
                   //System.out.print("No match found!");
                   //System.out.println("Counter 2: "+counter2);
                   counter2=counter1+1;
                   test[0]="";
               }

               counter1++;
               //System.out.println("Counter 1: "+counter1);
                           }

             System.out.println(test[0]);
             System.out.println(s2.replaceAll(test[0]," "));
        }
    }
Run Code Online (Sandbox Code Playgroud)