用Java编写程序以检查子字符串是否存在于给定字符串中而不使用数组

时间:2019-01-02 13:56:55

标签: java

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

1 个答案:

答案 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);