2014-12-30 3 views
-4

Как вы решаете это, используя цикл? и что лучше, для цикла или просто lastIndexOf?Как решить это упражнение, используя for-loop?

Вот проблема и три тестовых случая:

Даны две строки, возвращает истину, если любой из строк появляется в самом конце другой строки, игнорируя верхний/нижний различия регистра (другими словами, вычисление не должно быть «чувствительным к регистру»). Примечание: str.toLowerCase() возвращает строчную версию строки.

endOther ("Hiabc", "ABC") → истинной

endOther ("ABC", "HiaBc") → истинной

endOther ("ABC", "abXabc") → истинная

Вот мой код:

public boolean endOther(String a, String b) { 

String newA = a.toLowerCase(); 
String newB = b.toLowerCase(); 

if(a.length() >= b.length() && newA.lastIndexOf(newB) == (a.length() - b.length())) return true; 
if(b.length() >= a.length() && newB.lastIndexOf(newA) == (b.length() - a.length())) return true; 

return false; 
} 
+0

или [.endsWith] (http://www.tutorialspoint.com/java/java_string_endswith.htm) – chancea

ответ

0

В случае необходимости для цикла вы можете использовать приведенный ниже код.

public static boolean check(String s1,String s2) 
{ 
    boolean result = false; 

    if(s1.length() >= s2.length()) 
    { 
     result = compare(s1, s2); 
    } 
    else 
    { 
     result = compare(s2,s1); 
    } 


    return result; 
} 

public static boolean compare(String s1,String s2) 
{ 
    boolean result = false; 
    char[] array1 = s1.toCharArray(); 
    char[] array2 = s2.toCharArray(); 
    if(array1.length>=array2.length) 
    { 
     int j = array2.length-1; 
     for(int i = array1.length-1;i>=0;i--,j--) 
     { 
      if(j==0) 
      { 
       if(!(array1[i]==array2[j])) 
       { 
        break; 
       } 
       else 
       { 
        result = true; 
        break; 
       } 
      } 
      else 
      { 
       if(!(array1[i]==array2[j])) 
       { 
        break; 
       } 
      } 
     } 
    } 

    return result; 

} 

Но лучший способ уже предоставлен @upma.

1

код, как показано ниже, надеюсь, что это может помочь вам. Проверьте собственный метод java.lang.String прежде чем вы хотите что-то сделать со строкой.

public class Main { 
    public static void main(String[] args) { 
     System.out.println(endOther("Hiabc", "abc")); 
     System.out.println(endOther("AbC", "HiaBc")); 
     System.out.println(endOther("abc", "abXabc")); 
    } 

    public static boolean endOther(String a, String b){ 
     a = a.toLowerCase(); 
     b = b.toLowerCase(); 
     if (a.length() >= b.length()) { 
      return a.endsWith(b); 
     }else { 
      return b.endsWith(a); 
     } 
    } 
} 
Смежные вопросы