2013-03-23 2 views
1

Хорошо, я уверен, что это должно быть где-то здесь, но я не могу найти ее.Минимальная строка в соответствии со строкой # CompareTo

Есть ли, и есть ли минимальная (не нулевая) последовательность String в соответствии с String#CompareTo?

Я угадываю "", но я не совсем уверен.

+0

у виду string.Empty; ? – Mikatsu

+0

@ Микацу, что это? – ddmps

+0

string.Empty - это строка длиной 0 – Mikatsu

ответ

1

С учетом реализации String#compareTo (см. source) вы можете проверить, что строка размера 0 (таким образом, пустая строка) всегда будет хуже или равна любой другой ненулевой строке. (равный в случае сравнения с пустой строкой).

0

Там нет минимальной длины, так как вы можете на законных основаниях сравнить две пустые строки с "".compareTo("")

+2

Ну, длина не может быть меньше 0, поэтому «» - это фактически минимальная длина, нет? – ddmps

+1

Да, я предполагал, что это подразумевалось. То есть что для этой конкретной операции не существует минимальной длины длины, кроме минимальной длины строки – HXCaine

+1

Это не отвечает на вопрос. Я не просил минимальную длину, я просил минимальную строку в соответствии с лексикографическим заказом. – Jeff

0

Да, это пустая строка с не значениями в нем.

Взгляните на этот пример кода:

String str = ""; 
str.compareTo(""); 
+1

Хотя это, по-видимому, имеет правильный ответ, пример на самом деле не доказывает, что ... – Jeff

0

Да минимальная длина строки будет пустая строка «» с длиной 0. Я не думаю, что будет такая строка длиной менее 0.

+1

Это не отвечает на вопрос. Я не просил минимальную длину, я просил минимальную строку в соответствии с лексикографическим заказом. – Jeff

1

Edit:

Попробуйте это,

String s=""; 
     String s1=new String(new char[-2]); // Here you will get NagativeArraySize Exception 
    System.out.println(s1.compareTo(s)); 

Здесь CompareTo ничего не возвращает в System.out.println(), поэтому минимальная строка будет "" или String.Empty


AFAIK, нет минимальной длины, и вы не можете найти строку длиной < 0, поэтому минимальная длина для строки 0 (строка .Empty или "").

Проверить этот исходный код CompareTo,

public int compareTo(String anotherString) { 
     int len1 = count;  // original string count 
     int len2 = anotherString.count; // comparision string count 
     int n = Math.min(len1, len2);  
     char v1[] = value; 
     char v2[] = anotherString.value; 
     int i = offset; 
     int j = anotherString.offset; 

     if (i == j) { 
      int k = i; 
      int lim = n + i; 
      while (k < lim) { 
       char c1 = v1[k]; 
       char c2 = v2[k]; 
       if (c1 != c2) { 
        return c1 - c2; 
       } 
       k++; 
      } 
     } else { 
      while (n-- != 0) { 
       char c1 = v1[i++]; 
       char c2 = v2[j++]; 
       if (c1 != c2) { 
        return c1 - c2; 
       } 
      } 
     } 
     return len1 - len2; 
    } 
+0

Я не просил минимальную длину, но +1 для кода, который в любом случае отвечает на вопрос. – Jeff

Смежные вопросы