微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检查一个字符串是否具有相同顺序的相同字符,但其他字符串在 Java 中是否有多余字符

如何解决如何检查一个字符串是否具有相同顺序的相同字符,但其他字符串在 Java 中是否有多余字符

所以基本上我必须检查另一个字符串是否具有相同顺序的相同字符。

enter image description here

因此,如果血液中的字母与冠状病毒的顺序相同,就像第二个一样,我必须打印为阳性。如何在 Java 中做到这一点?提前致谢。

解决方法

您可能希望使用 String#indexOf() 方法和布尔标志,例如:

String mainString = "caronavirus";
String[] stringsToCompare = {"abcde","crnas","aovrs","onarous"};
    
System.out.println("INPUT\n=====");
System.out.println(mainString);
System.out.println(stringsToCompare.length);
for (String wStrg : stringsToCompare) {
    System.out.println(wStrg);
}
System.out.println();
System.out.println();
System.out.println("OUTPUT\n======");

System.out.println(mainString);
System.out.println(stringsToCompare .length);
for (String wStrg : stringsToCompare) {
    int idx = 0;
    boolean isNegative = false;
    for (int i = 0; i < wStrg.length(); i++) {
        String ch = wStrg.substring(i,i + 1);
        if (mainString.indexOf(ch,idx) >= idx) {
            idx = mainString.indexOf(ch,idx);
        }
        else {
            System.out.println("NEGATIVE");
            isNegative = true;
            break;
        }
    }
    if (!isNegative) {
        System.out.println("POSITIVE");
    }
}

控制台窗口显示应该类似于:

INPUT
=====
caronavirus
4
abcde
crnas
aovrs
onarous


OUTPUT
======
NEGATIVE
POSITIVE
POSITIVE
NEGATIVE
,

您可以从要针对主字符串测试的每个字符串中创建一个正则表达式。例如,crnas 应该转换为 .*c.*r.*n.*a.*s.*,然后您可以将其与返回布尔值的 String.matches 方法一起使用。例如,coronavirus.matches(".*c.*r.*n.*a.*s.*") 将返回 true。给你一个起点:

import java.util.Arrays;
import java.util.stream.Collectors;

public class Example {
    public static void main(String[] args) throws Exception {
        String mainString    = "coronavirus";
        String[] testStrings = {"abcde","onarous"};

        for(String test : testStrings){
            System.out.println(test + " : " + (mainString.matches(toRegex(test)) ? "POSITIVE" : "NEGATIVE"));
        }
    }

    static String toRegex(String input){
        return Arrays.stream(input.split(""))
                     .collect(Collectors.joining(".*",".*",".*"));
    }
}

输出:

abcde : NEGATIVE
crnas : POSITIVE
onarous : NEGATIVE

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?