Java 如何在不使用数组的情况下比较这两个字符串并删除公共字母?

Java 如何在不使用数组的情况下比较这两个字符串并删除公共字母?,java,string,Java,String,这是我为解决这个问题而设计的代码,但它似乎根本不起作用。我使用嵌套for循环来比较第一个字符串和第二个字符串的字母,因为它们可能有不同的长度 import java.util.*; public class Trim { public static String myTrim(String input, String list) { String r = ""; for (int i = 1; i < input.length();i++)

这是我为解决这个问题而设计的代码,但它似乎根本不起作用。我使用嵌套for循环来比较第一个字符串和第二个字符串的字母,因为它们可能有不同的长度

import java.util.*;
public class Trim
{
    public static String myTrim(String input, String list)
    {
        String r = "";
        for (int i = 1; i < input.length();i++)
        {
            for (int k = 1; k < list.length();k++)
            {
                if (input.charAt(i) != list.charAt(i))
                {
                    r += input.charAt(i);
                }
            }
        }
        return r;
     }

}
import java.util.*;
公共级修剪
{
公共静态字符串myTrim(字符串输入,字符串列表)
{
字符串r=“”;
对于(int i=1;i

尝试使用标志来确定是否重复字符:

String r = "";
for (int i = input.length() - 1; 0 <= i; i --) {
  if (-1 == list.indexOf(input.charAt(i))) {
    r +=  input.charAt(i);
  }
}
String r=”“;
对于(int i=input.length()-1;0
  • 我们必须从列表中出现的输入中过滤掉字符
  • 现在我们必须检查输入的每个字符是否出现在列表中
  • 如果列表字符串中存在输入字符,则k值将小于list.length()
  • 循环之后,我们检查k值并将其附加到新字符串中
  • 公共静态字符串myTrim(字符串输入,字符串列表)
    {
    字符串r=“”;
    对于(int i=0;i
    我想您应该使用
    String.indexOf
    方法。 因此:

    公共静态字符串myTrim(字符串输入,字符串列表)
    {
    StringBuilder结果=新建StringBuilder();
    字符c;
    对于(int i=0;i
    我已经尝试过这段代码,它可以很好地处理您的两个输入

    for (int i = 0; i < S1.length(); i++) {
    
            for(int j=0;j< S2.length();j++) {
    
                if(S1.charAt(i)==S2.charAt(j)) {
    
                    char Temp= S2.charAt(j);
                    String Temp2=String.valueOf(Temp);
    
                S1=S1.replace(Temp2, "");
                }
            }
    
        }
    
    for(int i=0;i
    这是密码

        import java.util.Scanner;
    
    public class StringRemoveChar {
    
        public static void main(String[] args) {
    
            Scanner scanner = new Scanner(System.in);
            String S1, S2;
    
            S1 = scanner.nextLine();
            S2 = scanner.nextLine();
    
            for (int i = 0; i < S1.length(); i++) {
    
                for (int j = 0; j < S2.length(); j++) {
                    if (S1.charAt(i) == S2.charAt(j)) {
                        char Temp = S2.charAt(j);
                        String Temp2 = String.valueOf(Temp);
                        S1 = S1.replace(Temp2, "");
                        System.out.println(S1.length());
                    }
                }
    
            }
            System.out.println(S1);
    
        }
    
    }
    
    import java.util.Scanner;
    公共类StringRemoveChar{
    公共静态void main(字符串[]args){
    扫描仪=新的扫描仪(System.in);
    字符串S1、S2;
    S1=scanner.nextLine();
    S2=scanner.nextLine();
    对于(int i=0;i
    输入:

    宫崎骏 你

    输出:

    宫崎骏


    一个很好的一行解决方案是使用:


    我们可以使用replaceAll并使用一个循环,这将使解决方案变得简单

    public static String myTrim(String input, String list)
        { 
            for(int i=0;i<list.length();i++)
            {
                input=input.replaceAll(list.charAt(i)+"","");
            }
    
            return input;
         }
    
    公共静态字符串myTrim(字符串输入,字符串列表)
    { 
    
    对于(int i=0;i为什么不使用k?给定的问题描述似乎询问列表中出现在输入中任何位置的任何字符,而不仅仅是在同一位置。您到底在问什么?要更简单的方法?要更快的方法?如果您的代码没有给出预期的输出?但是发布的代码段有一些基本错误。Java generally将
    0
    作为第一个索引,并且您没有使用
    k
    变量。“它似乎根本不起作用”->您得到了什么错误/输出?您不能使用数组!:)如果s1和s2的长度不相同,这会给我带来超出范围的错误请提供测试用例,因为我在问题中给出的两个示例上都执行了此代码,这两个示例都不相同,并且运行良好。我希望您在注释之前尝试过执行。对不起,它最终会运行。我在尝试接收fir时遇到问题st字符串作为键盘的输入。我只是想我只需要直接在方法中键入字符串。谢谢老板!通过添加..我的意思是你应该在答案中添加,以便更可读和更有用。我做了同样的事情,但当你尝试使用类似{迈阿密大学}的短语时,它只返回{Univers}我能够得到正确的输出,这是不确定的Mam,你能运行完整的代码,并检查我已经更新了我的答案谢谢!我已经整理好了
    for (int i = 0; i < S1.length(); i++) {
    
            for(int j=0;j< S2.length();j++) {
    
                if(S1.charAt(i)==S2.charAt(j)) {
    
                    char Temp= S2.charAt(j);
                    String Temp2=String.valueOf(Temp);
    
                S1=S1.replace(Temp2, "");
                }
            }
    
        }
    
        import java.util.Scanner;
    
    public class StringRemoveChar {
    
        public static void main(String[] args) {
    
            Scanner scanner = new Scanner(System.in);
            String S1, S2;
    
            S1 = scanner.nextLine();
            S2 = scanner.nextLine();
    
            for (int i = 0; i < S1.length(); i++) {
    
                for (int j = 0; j < S2.length(); j++) {
                    if (S1.charAt(i) == S2.charAt(j)) {
                        char Temp = S2.charAt(j);
                        String Temp2 = String.valueOf(Temp);
                        S1 = S1.replace(Temp2, "");
                        System.out.println(S1.length());
                    }
                }
    
            }
            System.out.println(S1);
    
        }
    
    }
    
    CharMatcher.anyOf(list).removeFrom(input);
    
    public static String myTrim(String input, String list)
        { 
            for(int i=0;i<list.length();i++)
            {
                input=input.replaceAll(list.charAt(i)+"","");
            }
    
            return input;
         }
    
    package stackoverflow.string;
    
    public class StringManipulation
    {
    
        public static void main(String[] args)
        {
    
            System.out.println(myTrim("University of Miami","city"));
    
        }
    
    
            public static String myTrim(String input, String list)
            { 
                for(int i=0;i<list.length();i++)
                {
                    input=input.replaceAll(list.charAt(i)+"","");
                }
    
                return input;
             }
    
    }