2016-07-06 84 views
-1

我編碼了第一部分,以及如何用較少的代碼完成第二部分?搜索是否所有的子字符串元素都存在於主字符串中?如何在主字符串中查找子字符串並搜索是否在主字符串中存在子字符串的所有元素

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(); 
     } 

} 
+1

你能舉出第二部分的例子嗎? – L01c

回答

0

可以使用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"); 

希望這能幫助你。

+0

得到了邏輯,它工作正常,謝謝 – Suresh

+0

好吧,請注意代碼是區分大小寫的,這意味着如果主字符串是'ABCDE'和子字符串'abcde',那麼它會說子字符串不存在在主字符串中,因爲「A」!='a''等等。爲了使它**不敏感**,只需使用'toUpperCase()'或'toLowerCase()'函數將主字符串和子字符串轉換爲相同的大小寫。 – progyammer

0

不是功能已經做到了嗎?我的意思是,如果你使用功能,那麼所有的字符(元素)str2都在str1與所有字符檢查,如果str2所有字符出現在str1然後才把函數將返回true。因此,第二種情況由函數隱式處理。

如果我錯了,請糾正我。

+1

對於說str1 = oracle和str2 = acl,你在這種情況下是正確的,但是如果str2 = lca呢? – Suresh

+0

我確定沒有使用庫函數的解決方案是需要的。這就是爲什麼這個代碼需要寫入。 – progyammer

相關問題