繁体   English   中英

在java中按字符比较两个字符串

[英]Comparing two strings by character in java

我有 2 个字符串:

  • first="BSNLP"

  • second = "PBN"(或用户输入的任何内容)。

要求是,O/P 应该只返回第一个字符而不是第二个字符的字符串。 例如。 在这种情况下,O/P 是 SL

例如2。

  • 第一个 = "ASDR"
  • 第二 = "捷运"

, o/p = "自闭症"

为此,我开发的编码:

String one = "pnlm";
String two ="bsnl";
String fin = "";

for(int i =0; i<one.length();i++)
        {
            for(int j=0;j<two.length();j++)
            {

                //System.out.print(" "+two.charAt(j));

                if(one.charAt(i) == two.charAt(j))
                {
                    fin+=one.charAt(i);

                }

            }

        }

ch=removeDuplicates(fin);
        System.out.print(" Ret ::"+fin);

        System.out.println("\n Val ::"+ch);

CH 给了我具有相等字符的字符串,但是使用这种逻辑我无法得到不相等的字符。

有人可以帮忙吗?

您可以使用Set interface添加所有第二个字符数组,以便稍后在那里进行检查。

样本:

String one = "ASDR";
String two ="MRT";
StringBuilder s = new StringBuilder();

Set<Character> set = new HashSet<>();
for(char c : two.toCharArray())
    set.add(c); //add all second string character to set
for(char c : one.toCharArray())
{
    if(!set.contains(c)) //check if the character is not one of the character of second string
        s.append(c); //append the current character to the pool
}

System.out.println(s);

结果:

ASD

我有简单的交换你的逻辑,见:

String one = "pnlm";
String two = "bsnl";
String fin = "";
int cnt;
for (int i = 0; i < one.length(); i++) {
    cnt = 0; // zero for no character equal
    for (int j = 0; j < two.length(); j++) {
        //  System.out.print(" "+two.charAt(j));

        if (one.charAt(i) == two.charAt(j)) {
            cnt = 1; // ont for character equal
        }

    }
    if (cnt == 0) {
        fin += one.charAt(i);
    }
}

System.out.print(" Ret ::" + fin);

o/p:返回Ret ::pm

public static void main(String[] args) 
{
    String one = "ASDR";
    String two ="MRT";
    String fin = unique(one, two);

    System.out.println(fin);
}

private static String unique(final String one,
                             final String two)
{
    final List<Character> base;
    final Set<Character>  toRemove;
    final StringBuilder   remaining;

    base = new ArrayList<>(one.length());
    toRemove = new HashSet<>();

    for(final char c : one.toCharArray())
    {
        base.add(c);
    }

    for(final char c : two.toCharArray())
    {
        toRemove.add(c);
    }

    base.removeAll(toRemove);
    remaining = new StringBuilder(base.size());

    for(final char c : base)
    {
        remaining.append(c);
    }

    return (remaining.toString());
}
  1. 迭代第一个字符串
  2. 对于每个字符,检查第二个字符串是否包含它
  3. 如果没有,请将字符添加到StringBuilder
  4. 返回stringBuilder.toString()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM