variable valores valor uso usar una tercera que pseint programacion posiciones para numéricas los lea intercambie intercambiar hacer funcion enteros elaborar cómo contenido como cambio auxiliar array algoritmo java string swap

valores - Cómo intercambiar dos variables de cadena en Java sin usar una tercera variable



uso de variable auxiliar en java (15)

¿Cómo puedo intercambiar dos variables de cadena en Java sin utilizar una tercera variable, es decir, la variable temporal?

String a = "one" String b = "two" String temp = null; temp = a; a = b; b = temp;

Pero aquí hay una tercera variable. Necesitamos eliminar el uso de la tercera variable.


// tomado de esta respuesta: https://.com/a/16826296/427413

String returnFirst(String x, String y) { return x; } String a = "one" String b = "two" a = returnFirst(b, b = a); // If this is confusing try reading as a=b; b=a;

Esto funciona porque el lenguaje Java garantiza (Java Language Specification, Java SE 7 Edition, sección 15.12.4.2) que todos los argumentos se evalúan de izquierda a derecha (a diferencia de otros idiomas, donde el orden de evaluación no está definido), por lo que el orden de ejecución es:

  1. El valor original de b se evalúa para ser pasado como el primer argumento a la función
  2. La expresión b = a se evalúa y el resultado (el nuevo valor de b ) se pasa como el segundo argumento de la función.
  3. La función se ejecuta, devolviendo el valor original de b e ignorando su nuevo valor
  4. Asignando el resultado a a
  5. Ahora los valores se han intercambiado y no es necesario declarar temp . El parámetro x funciona como temp , pero se ve más limpio porque define la función una vez y puede usarla en todas partes.

Aqui tienes. Prueba esto:

String a = "one"; String b = "two"; //String temp=null; int i = a.length(); a += b; b = a.substring(0, i); a = a.substring(i, a.length()); System.out.println(a + " " + b);

Toma cualquier valor como una cadena en una variable. Será permuta.


Hazlo así sin usar una tercera variable:

String a = "one"; String b = "two"; a = a + b; b = a.substring(0, (a.length() - b.length())); a = a.substring(b.length()); System.out.println("a = " + a); System.out.println("b = " + b);


La forma más sencilla se da a continuación:

String a = "one"; String b = "two"; System.out.println("Before swap: " a + " " + b); int len = a.length(); a = a + b; b = a.substring(0, len); a = a.substring(len); System.out.println("After swap: " a + " " + b);


Para cuerdas:

String a = "one" String b = "two" a = a + b; b = a.replace(b, ""); a = a.replace(b, "");


Para el Método de Cuerda 1:

public class SwapWithoutThirdVar{ public static void main (String args[]){ String s1 ="one"; String s2 ="two"; s1= s1+s2; s2 = s1.substring(0,(s1.length()-s2.length())); s1 = s1.substring(s2.length()); System.out.println("s1 == "+ s1); System.out.println("s2 == "+ s2); } }

Método 2:

public class SwapWithoutThirdVar { public static void main (String[] args) throws java.lang.Exception { String s1 = "one"; String s2 ="two"; s1=s2+s1; s2=s1.replace(s2,""); s1=s1.replace(s2,""); System.out.println("S1 : "+s1); System.out.println("S2 : "+s2); } }

Para enteros

clase pública SwapWithoutThirdVar {

public static void main(String a[]){ int x = 10; int y = 20; x = x+y; y=x-y; x=x-y; System.out.println("After swap:"); System.out.println("x value: "+x); System.out.println("y value: "+y); } }


Puedes hacerlo de esta manera.

public static void main(String[] args) { // TODO Auto-generated method stub String a = "one"; String b = "two"; System.out.println(a); System.out.println(b); a = a+b; b = ""; System.out.println("*************"); b = a.substring(0, 3); a = a.substring(3, 6); System.out.println(a); System.out.println(b); }


paquete com.core;

clase pública SwappingNoTemp {

public static void main(String[] args) { String a = "java"; String b = "c"; a = a + b; b = a.substring(0, a.length() - b.length()); a = a.substring(b.length()); System.out.println("swapping is a.." + a); System.out.println("swapping is b.." + b); }

}



public class SwapStringVariable { public static void main(String[] args) { // TODO Auto-generated method stub String a = "test"; String b = "paper"; a = a + b; b = a.substring(0, a.length() - b.length()); a = a.substring(b.length(), a.length()); System.out.println(a + " " + b); } }


public class ex{ public static void main(String[] args){ String s1="abc"; String s2="def"; System.out.println(s1); System.out.println(s2); s3=s2.replaceAll(s1,s2=s1); System.out.println(s1); System.out.println(s2); } }


String a="one"; String b="two"; a = a.concat("#" + b); b = a.split("#")[0]; a = a.split("#")[1];

Esto funcionará siempre que su cadena no contenga el carácter # en ellos. Siéntete libre de usar cualquier otro personaje en su lugar.

Podría usar un posible carácter Unicode, como "/ u001E" en lugar de #.


String name = "george"; String name2 = "mark"; System.out.println(name+" "+name2); System.out.println(name.substring(name.length()) + name2 + " "+ name );

Aquí subcadena (); método devuelve cadena vacía. Por lo tanto, los nombres pueden ser agregados.


String str1 = "first"; String str2 = "second"; str1 = str2+str1; str2 = str1.substring(str2.length(),str1.length()); str1 = str1.substring(0,(str1.length() - str2.length())); System.out.println(str1); System.out.println(str2);