String s,sub,s1="",s2="";
int l,l1,n;
int k = 0;
char ch,ch1;
System.out.println("enter String");
s = sc.next();
System.out.println("enter sub String");
sub = sc.next();
l = s.length();
l1 = sub.length();
for(int i =0;i<l1;i++)
{
ch = sub.charAt(i);
for(int j = 0;j<l;j++)
{
ch1 = s.charAt(j);
if((int)ch-(int)ch1==0)
{
k=1;
s1 = sub.substring(i+1);
int l2 = s1.length();
s2 = s.substring(j+1);
break;
}
}
break;
}
int l2 = s1.length();
String s3 = s2.substring(0,l2);
if(s1.equals(s3))
System.out.println("present");
else
System.out.println("not present");
}
该程序未提供正确的输出
input:Hello
enter subString
lo
output: not present
**expected output**
input:
enter string :Hello
enter subString: lo
output: present
its giving correct output for other input
input:
enter String:hello
enter sub String: ello
output:present
**one more example**
enter String
hello
enter:sub String
l
output:present
答案 0 :(得分:0)
为什么不使用contains(String)
进行比较,而不使用trim()
删除字符串开头和结尾的空白字符?
String s,sub;
System.out.println("enter String");
s = sc.next().trim();
System.out.println("enter sub String");
sub = sc.next().trim();
if(s.contains(sub)){
System.out.println("present");
}else{
System.out.println("not present");
}
编辑
您可以逐个字符比较字符。
boolean isSubString = false;
for(int i = 0; i <= s.length() - sub.length(); i++) {
isSubString = true;
for(int j = 0; j < sub.length(); j++) {
if(s.charAt(i+j) != sub.charAt(j)) {
isSubString = false;
break;
}
}
if(isSubString == true) {
break;
}
}
System.out.println(isSubString);