我刚刚开始,我完全迷失了如何做到这一点.
我希望能够检查字符串是否有较小的字符串,如果字符串按顺序包含字符串的字母,则返回true.
我不确定如何确保第二个字符串的字母顺序排列,即使它们之间还有其他字母.
一个例子是“化学”对于字符串“hit”将返回true.
但是对于字符串“him”它会返回false.
任何帮助将不胜感激.
编辑:谢谢,我将“substring”改为字符串.正如我所说,我刚开始并且不知道这意味着别的什么.我非常感谢所有的帮助.它应该让我朝着正确的方向前进.
解决方法
一般的方法是迭代较长字符串的字符(“化学”),始终跟踪较短字符串中的下一个所需字符的索引(“命中” – 先是0,然后一旦找到h,则为1一旦你找到我,然后当你发现你已经完成了).例如:
public static boolean containsSubsequence( final String sequence,final String subsequence) { if (subsequence.isEmpty()) { return true; } int subsequenceIndex = 0; for (int i = 0; i < sequence.length(); ++i) { if (sequence.charAt(i) == subsequence.charAt(subsequenceIndex)) { ++subsequenceIndex; if (subsequenceIndex == subsequence.length()) { return true; } } } return false; }