【发布时间】:2017-05-26 08:57:10
【问题描述】:
晚上,
我正在尝试找到解决此问题的最佳解决方案:
输入:
String1 = "algrtvy";
String2 = "alg";
String3 = "gvy";
String4 = "mgr";
String5 = "aall";
str2, 3, 4, 5的chars是否包含在1中?
输出
true
true
false
false
所以,我不是在检查序列(子字符串),而是检查单个字符。
有什么建议吗? 我正在寻找计算时间的快速解决方案。
解决方案:
此解决方案是来自@davidxxx 答案的实施版本。
public boolean haveChars(String longerString, String shorterString) {
String chars = longerString;
for (char c : shorterString.toCharArray()){
int index = chars.indexOf(c);
if (index == -1) {
return false;
} else {
chars = chars.substring(0,index) + chars.substring(index + 1);
}
}
return true;
}
【问题讨论】:
-
我不认为它是重复的,因为 OP 不需要检查子字符串。 OP 检查子序列。
-
问题陈述具有误导性。 “包含在”表示子字符串,但
String3的true输出表明它与单个字符有关。 -
它不是重复的@EnzoNocera,我不是在寻找子字符串,而是在寻找字符检查。
-
@jsheeran 确切地说,我不是在寻找子字符串