在String比较期间将String.charAt减少到一个循环

时间:2011-11-21 18:33:39

标签: java comparison

我需要比较两个不同长度的字符串,因此我写了两个条件循环,具体取决于String最长:

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)超出界限异常。我的问题是上面的实现是否有一个我缺失的极端情况,或者它是否适用于所有可能的输入。

2 个答案:

答案 0 :(得分:3)

如果第二个字符串更长,您的修订版本将会中断。

使用:

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

然后你的病情只需要:

i < combinedLength

答案 1 :(得分: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
}