2011-11-21 53 views
1

我需要比較兩個字符串的長度不一,因此我寫這取決於兩項有條件的環路上字符串是最長的:字符串比較期間減少String.charAt一個循環

boolean compare(String first, String second) 
{ 
    boolean firstLongest = first.length() > second.length(); 
    if(firstLongest) 
     { 
     for(int i = 0; i < first.length(); i++) 
      //charAt code here 
     } 
    else{ 
      for(int i = 0; i < second.length();i++) 
       //charAt code here 
     } 

} 

我決定重寫它如下:

boolean compare(String first, String second) 
    { 
     int lengthDifference = first.length() - second.length(); 
     for(int i = 0; i < first.length() + lengthDifference;i++) 
     //charAt code here  
    } 

我想避免有1)兩個循環和2)超出界限例外。我的問題是,上面的實現有一個我失蹤的案例,或者應該爲所有可能的輸入工作。

+0

'first.length'! –

+0

你在for循環裏面做什麼?謝謝! – Mechkov

+0

@Mechkov我正在做一個簡單的charAt電話 – Woot4Moo

回答

3

如果第二個字符串更長,您的修訂版本將會中斷。

用途:

int combinedLength = Math.min(first.length(), second.length()); 

那麼你的條件只需要爲:

i < combinedLength 
+0

我一直在忘記Math api,很好的捕捉 – Woot4Moo

1

只需用最低的國家之一:

//Maybe knowing what the length diff is interesting to achieve your goal: 
int lenDiff = Math.abs(first.length() - second.length()); 

// The loop, taking the length of the shortest one as limit 
for (int i = 0; i < Math.min(first.length(), second.length()); ++i) 
{ 
    // Char code here 
}