java - 字符串是子字符串的组合吗?

标签 java string

给定两个字符串,如果大字符串是小字符串的组合,我的函数应该返回 true,否则返回 false。即

cat 和 catcatcatcat 将返回 true cat 和 catdogcatcat 将返回 false

我不确定为什么它不起作用或者我的逻辑是否正确。

public static boolean isCat(String s, String y) {
    int yl= y.length();
    int counter= 0;    

    for (int i= 0; i < s.length(); i++ ) {
        char[] ychar= y.toCharArray();
        char[] subchar= s.substring(counter, counter + yl).toCharArray();
        if (Arrays.equals(ychar, subchar) == true) {
            counter+= yl;
            return true;
        }
    }
    return true;
}

最佳答案

更简单的方法是 replace()子字符串的所有实例都有空字符串,并检查结果字符串是否为空。

public class Test {
    public static void main(String[] args) {
        System.out.println(isCat("catcatcat", "cat")); // "true"
        System.out.println(isCat("cacatcatt", "cat")); // "false"
    }

    public static boolean isCat(String full, String sub) {
        return sub.isEmpty() || !full.isEmpty() && full.replace(sub, "").isEmpty();
    }
}

或者,使用正则表达式检查字符串 matches() 是否为子字符串的倍数:

public static boolean isCat(String full, String sub) {
    return full.matches("(\\Q" + sub + "\\E)+");
}

关于java - 字符串是子字符串的组合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071891/

相关文章:

string - 如何在jsf页面上以html格式显示字符串

java - 使用一个类中的方法到一个集合中

java - 尝试将图像从 firebase 数据库获取到存储时发生 StorageException

java - 如何使用 Java 运行 jnlp 文件?

java - 媒体转换库

java - 在java中将文档(XML)直接转换为字符串,而不使用transform或XMLSerializer

string - move std::runtime_error 的构造函数

string - Haskell 中的高效字符串实现

java - Thread.holdsLock(lock) 的目的是什么?

regex - 句子中的最后一个单词 : In SQL (regular expressions possible? )