如何在主字符串中查找子字符串并搜索是否在主字符串中存在子字符串的所有元素
我编码了第一部分,以及如何用较少的代码完成第二部分?搜索是否所有的子字符串元素都存在于主字符串中?如何在主字符串中查找子字符串并搜索是否在主字符串中存在子字符串的所有元素
public static void main(String[] args)
{
Scanner getString = new Scanner(System.in);
System.out.println("provide the main string: \n");
try {
String str1 = getString.nextLine();
System.out.println("provide the sub string: \n");
String str2 = getString.nextLine();
if (str1.toLowerCase().contains(str2.toLowerCase()))
{
System.out.println("It is a substring");
} else
{
System.out.println("It is not a substring");
}
}
finally
{
getString.close();
}
}
可以使用java.lang.String
类的indexOf()
方法来检查主字符串中的子字符串的每个字符是否存在。
逻辑:初始化一个计数变量n
。现在,遍历for循环中的子字符串的每个字符。使用indexOf()函数检查每个字符是否存在于主字符串中。如果存在,则将n的值增加1.在循环外部,检查子字符串的n ==长度。如果n ==子串的长度,则子串的所有元素都存在于主串中。
考虑下面的代码。
String main_str <--- MAIN STRING
String sub_str <--- SUB STRING
int n=0;
for(int i=0; i<sub_str.length();i++){
if(main_str.indexOf(sub_str.charAt(i))!=-1)
n++;
}
if(n==sub_str.length())
System.out.println("All elements of sub string EXIST in the main string");
else
System.out.println("All elements of sub string DO NOT EXIST in the main string");
希望这能帮助你。
得到了逻辑,它工作正常,谢谢 – Suresh
好吧,请注意代码是区分大小写的,这意味着如果主字符串是'ABCDE'和子字符串'abcde',那么它会说子字符串不存在在主字符串中,因为“A”!='a''等等。为了使它**不敏感**,只需使用'toUpperCase()'或'toLowerCase()'函数将主字符串和子字符串转换为相同的大小写。 – progyammer
不是功能已经做到了吗?我的意思是,如果你使用功能,那么所有的字符(元素)str2
都在str1
与所有字符检查,如果str2
所有字符出现在str1
然后才把函数将返回true
。因此,第二种情况由函数隐式处理。
如果我错了,请纠正我。
对于说str1 = oracle和str2 = acl,你在这种情况下是正确的,但是如果str2 = lca呢? – Suresh
我确定没有使用库函数的解决方案是需要的。这就是为什么这个代码需要写入。 – progyammer
你能举出第二部分的例子吗? – L01c