2014-10-20 2 views
1

Я хотел бы проверить, содержит ли строка список подписок.
Например, str1 = "qwertyuiop" и str2 = "tyu"returns true.
Я написал метод iterative.java итеративный к рекурсивному 2 вложенному циклу

public static boolean checkString(String str1, String str2) { 
    for (int i=0; i<str2.length(); i++) { 
     int j = 0; 
     for (; j<str1.length()&& str1.charAt(j)!=str2.charAt(i); j++) { 

     } 
     if (j== str1.length()) 
      return false; 
    } 
    return true;  
} 

Я пытаюсь изменить его на recursive метод, но не знаю, как так как есть два вложенных для петель. Спасибо заранее.

+1

Почему вы не используете метод str1.contains (str2)? –

+1

Почему бы просто не использовать String.contains (String seq)? –

+0

@sam_eera @Tyler это всего лишь пример использования вложенного цикла цикла, поскольку я хочу видеть, как «рекурсия» будет работать, когда есть более одного цикла. – user2875021

ответ

1
public class Test { 

    public static void main(String[] args) { 
     System.out.println(isSubstring("ankur", "ku")); 
    } 

    public static boolean isSubstring(String str1, String str2) { 
     if ((str1 == null) || (str2 == null) || str1.isEmpty()) { 
      return false; 
     } else if (str1.startsWith(str2)) { 
      return true; 
     } else { 
      return isSubstring(str1.substring(1), str2); 
     } 
    } 
} 
3

Предлагаю вам сосредоточиться на других мероприятиях. Java уже включает в себя функцию, чтобы делать то, что вы реализуете, и это String.contains(CharSequence) как

if (str1.contains(str2)) { // <-- wherever you would have called "checkString" 
    // ... 
} 
Смежные вопросы