2013-02-17 4 views
-4

Меня спрашивали об этом в одном из интервью.Обратные слова в той же строке []?

Как изменить слова в строке в java? Пример: String [] s = "Кошка сидела на диване" превратится в S = "диван на сидел кошки" модификации и то же с

Я сказал:

общественного Строка обратного (String [] S) {

String reverse = ""; 
    for(int i = (s.length -1); i>=0; i--) 
    { 
    reverse = reverse + s[i] + " "; 

    } 
    return reverse; 
    } 

интервьюер далее сказал, что я не должен использовать любые строковые переменные, например string reverse = ""; Мне нужно изменить тот же вход String [] s = {Кошка сидела на диване}.

+0

Это не массив, а строка. В любом случае, что вы пробовали? –

+0

Я бы не сказал, что это дубликат, OP хочет изменить строку на месте без каких-либо вспомогательных объектов. И это невозможно в Java без каких-либо трюков, которые он не хочет делать :) – jdevelop

ответ

0

вот код из предоставленной мной ссылки. Взгляните на эту ссылку, есть несколько способов сделать это. Хотя помните строки являются неизменными, и вы не можете сделать это, если вы не отбрасывают или использовать символ и т.д.

public String reverse(String s) { 
    String reverseStringVariable = ""; 
    for (int i = s.length() - 1; i != -1; i--) { 
     reverseStringVariable += s.charAt(i); 
    } 
    return reverseStringVariable; 
} 

http://www.brilliantsheep.com/3-ways-to-reverse-a-string-in-java/

0

Вы не можете изменить объект строки на всех, потому что это непреложный. Если вы хотите сделать что-то вроде реверсирования слов на месте, лучше использовать массив символов.

+0

Спасибо jdevelop. Меня спросили об этом в одном из интервью, и я написал тот же код на доске. интервьюер далее сказал, что я не предполагаю использовать какие-либо строковые переменные, например. string reverse = ""; Мне нужно изменить тот же вход String [] s = {Кошка сидела на диване}. –

+0

Это может означать, что interviever вообще не квалифицирован в Java, или он ожидал, что вы скажете, что строки неизменны, поэтому его задача не может быть решена без каких-либо грязных трюков с отражением или взломом класса. И тогда лучше работать с массивами символов. – jdevelop

0
public void reverse(String[] s) { 
    if(s == null || s.length <= 1) { 
     return; 
    } 
    String temp = null; 
    for(int i = s.length(), j = 0; i > j; i--,j++){ 
      temp = result[j]; 
      result[j] = result[i]; 
      result[i] = temp;  
    } 

} 
+0

Могут ли они быть способом обращения к String [] s без использования String temp = null? –

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