JavaRush /ื‘ืœื•ื’ Java /Random-HE /ืžื—ืจื•ื–ืช ื”ืคื•ื›ื” ื‘-Java: ืœืœืžื•ื“ ืœื”ืคื•ืš ืžื—ืจื•ื–ื•ืช ื‘ื“ืจื›ื™ื ืฉื•ื ื•ืช

ืžื—ืจื•ื–ืช ื”ืคื•ื›ื” ื‘-Java: ืœืœืžื•ื“ ืœื”ืคื•ืš ืžื—ืจื•ื–ื•ืช ื‘ื“ืจื›ื™ื ืฉื•ื ื•ืช

ืคื•ืจืกื ื‘ืงื‘ื•ืฆื”
ื”ืื ืืคืฉืจ ืœื”ืคื•ืš ืœืžืชื›ื ืช ื˜ื•ื‘ ื‘ืœื™ ืœื“ืขืช ืืœื’ื•ืจื™ืชืžื™ื? ืžืื•ื“ ืžืื•ื“ ืฉื ื•ื™ ื‘ืžื—ืœื•ืงืช. ื›ืŸ, ืืชื” ื™ื›ื•ืœ ืœืžืฆื•ื ืขื‘ื•ื“ื” ื‘ื—ื‘ืจื•ืช ืžื™ืงื•ืจ ื—ื•ืฅ ืฉืœื ื•, ื›ื™ ื‘ืžื”ืœืš ืจืื™ื•ื ื•ืช ื”ื ืฉื•ืืœื™ื ืฉืืœื•ืช ื‘ืขื™ืงืจ ืขืœ ื˜ื›ื ื•ืœื•ื’ื™ื”. ืžื—ืจื•ื–ืช ื”ืคื•ื›ื” ื‘-Java: ืœืœืžื•ื“ ืœื”ืคื•ืš ืžื—ืจื•ื–ื•ืช ื‘ื“ืจื›ื™ื ืฉื•ื ื•ืช - 1ืื‘ืœ ื”ืื ืชื”ื™ื” ืžื•ืžื—ื” ื˜ื•ื‘ ืื ื”ื”ื—ืœื˜ื•ืช ืฉืœืš ืžืœืื•ืช ื‘ืงื‘ื™ื™ื? ืื ืชืจืฆื• ืœืขื‘ื•ืจ ืœื—ื‘ืจื” ื–ืจื” ืจืฆื™ื ื™ืช ื™ื•ืชืจ, ืชืชืงืœื• ื‘ืจืื™ื•ื ื•ืช ืฉืžืชืžืงื“ื™ื ื‘ืขื™ืงืจ ื‘ืืœื’ื•ืจื™ืชืžื™ื. ื›ืš ืื• ืื—ืจืช, ื›ื“ืื™ ืœืืžืฅ ืืช ื”ืืœื’ื•ืจื™ืชืžื™ื ื”ื‘ืกื™ืกื™ื™ื ื‘ื™ื•ืชืจ, ื›ื™ ืืœื’ื•ืจื™ืชื ื”ื•ื ื—ื‘ืจ ืฉืœ ืžืชื›ื ืช . ื”ื™ื•ื ื ื™ื’ืข ื‘ืื—ื“ ืžื”ื ื•ืฉืื™ื ื”ืœืœื• ื•ื ื“ื•ืŸ ื‘ื“ืจื›ื™ื ืœื”ืคื•ืš ืžื—ืจื•ื–ืช. ื”ื›ืœ ืคืฉื•ื˜ ื›ืืŸ. ื”ื™ืคื•ืš ืžื™ืชืจ ื”ื•ื ื”ื—ื–ืจืช ื”ืžื™ืชืจ ืœืื—ื•ืจ. ืœื“ื•ื’ืžื”: JavaRush forever ->reverof hsuRavaJ ืื– ืื™ืš ืืคืฉืจ ืœื”ืคื•ืš ืžื—ืจื•ื–ืช ื‘-Java?

1. StringBuilder/StringBuffer

ื”ื“ืจืš ื”ื ืคื•ืฆื” ื•ื”ืคืฉื•ื˜ื” ื‘ื™ื•ืชืจ ื”ื™ื ืœื”ืฉืชืžืฉ ื‘-StringBuilder/StringBuffer :
public static String reverseString(String str) {
  return new StringBuilder(str).reverse().toString();
}
ื”ืคืชืจื•ืŸ ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ = ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ. ื›ืฉืฉื•ืืœื™ื ืื•ืชืš ืื™ืš ืœื”ืคื•ืš ืžื—ืจื•ื–ืช ื‘-Java, ื–ื” ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืฆืจื™ืš ืœืขืœื•ืช ืขืœ ื”ื“ืขืช. ืื‘ืœ ื“ื™ื‘ืจื ื• ืขืœ ืืœื’ื•ืจื™ืชืžื™ื ืงื•ื“ื ืœื›ืŸ, ืœื? ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืคืชืจื•ื ื•ืช ืฉืื™ื ื ืžื—ื•ืฅ ืœืงื•ืคืกื”.

2. ืคืชืจื•ืŸ ืžืขืจืš

public static String reverseString(String str) {
  char[] array = str.toCharArray();
  String result = "";
  for (int i = array.length - 1; i >= 0; i--) {
     result = result + array[i];
  }
  return result;
}
ืื ื• ืžืžื™ืจื™ื ืืช ื”ืžื—ืจื•ื–ืช ืฉืœื ื• ืœืžืขืจืš ื‘ืฉื™ื˜ืช toCharArray . ื‘ื•ืื• ื ืจื™ืฅ ืœื•ืœืืช for ื“ืจืš ื”ืžืขืจืš ื”ื–ื” ืžื”ืงืฆื” ืฉืœื•, ื•ื ื•ืกื™ืฃ ืชื•ื•ื™ื ืœืžื—ืจื•ื–ืช ืฉื”ืชืงื‘ืœื” ืœืื•ืจืš ื”ื“ืจืš.

3. ืคืชืจื•ืŸ ืขื charAt

public static String reverseString(String str) {
  String result = "";
  for (int i = 0; i < str.length(); i++) {
     result = str.charAt(i) + result;
  }
  return result;
}
ื‘ืžืงืจื” ื–ื”, ืื ื—ื ื• ืืคื™ืœื• ืœื ืฆืจื™ื›ื™ื ืœืคืฆืœ ืืช ื”ืžื—ืจื•ื–ืช ืœืžืขืจืš, ืžื›ื™ื•ื•ืŸ ืฉืื ื• ืžื—ืœืฆื™ื ื›ืœ ืชื• ื‘ืฉื™ื˜ืช String class - charAt (ืœื•ืœืืช for, ืฉื•ื‘, ื”ืคื•ื›ื”, ืžื” ืฉืžืืคืฉืจ ืœื ื• ืœืงื—ืช ืชื•ื•ื™ื ื‘ืจืฆืฃ ืœืื—ื•ืจ).

4. ืคืชืจื•ืŸ ืขื Stack

ืืฃ ืื—ื“ ืœื ืžืฉืชืžืฉ ื‘ืžื—ืœืงื” Stack ื‘ืžืฉืš ื–ืžืŸ ืจื‘, ื•ื”ื™ื ื ื—ืฉื‘ืช ืœืžื™ื•ืฉื ืช, ืืš ืขื ื–ืืช, ืœืขื™ื•ืŸ, ื™ื”ื™ื” ืฉื™ืžื•ืฉื™ ืœื”ืกืชื›ืœ ืขืœ ืคืชืจื•ืŸ ื‘ืืžืฆืขื•ืชื”:
public static String reverseString(String str) {
  Stack<Character> stack = new Stack<>();
  String result = "";
  for (Character character : str.toCharArray()) {
     stack.add(character);
  }
  while (!stack.isEmpty()) {
     result = result + stack.pop();
  }
  return result;
}
ื›ืืŸ ืฉื•ื‘ ืื ื• ืžืฉืชืžืฉื™ื ื‘-toCharArray ื›ื“ื™ ืœืคืฆืœ ืืช ื”ืžื—ืจื•ื–ืช ืœืžืขืจืš ื•ืœืฉื™ื ืืช ื”ื›ืœ ื‘- Stack ืฉืœื ื• ืขื Character ืžืกื•ื’ ื’ื ืจื™ . ืœืื—ืจ ืžื›ืŸ, ืื ื• ืžืชื—ื™ืœื™ื ืœืงื—ืช ืืœืžื ื˜ื™ื ืžื”ื—ืœืง ื”ืขืœื™ื•ืŸ ืฉืœ ื”ืขืจื™ืžื”. ื‘ืฉืœ ืื•ืคื™ ื”ืžื—ืกื ื™ืช ื›ืžื‘ื ื” LIFO - L ast I n F irst O ut (ืจืืฉื•ืŸ ื ื›ื ืก, ื™ื•ืฆื ืื—ืจื•ืŸ), ืืœืžื ื˜ื™ื ื™ื™ืœืงื—ื• ืœืื—ื•ืจ ื•ื”ืชื•ืฆืื” ืชื™ืฉืžืจ ื‘ืฉื•ืจื” ื”ืžืชืงื‘ืœืช.

5. ืคืชืจื•ืŸ ืขืœ ื™ื“ื™ ืจืงื•ืจืกื™ื”

ื›ืžืขื˜ ื›ืœ ื‘ืขื™ื™ืช ืืœื’ื•ืจื™ืชื ื ื™ืชื ืช ืœืคืชืจื•ืŸ ื‘ืืžืฆืขื•ืช ืจืงื•ืจืกื™ื”. ื•ื›ืืŸ ื’ื ืื ื—ื ื• ืœื ื™ื›ื•ืœื™ื ื‘ืœืขื“ื™ื”. ืื• ืืคื™ืœื• ื‘ืœืขื“ื™ื”ื. ืื—ืจื™ ื”ื›ืœ, ื”ื™ื•ื ื ืฉืงื•ืœ ืœื ืจืง ืฉื™ื˜ื” ืื—ืช ืœืคืชืจื•ืŸ ืจืงื•ืจืกื™ื”, ืืœื ื›ืžื”.
  • ืฉื™ื˜ื” ืื—ืช

    public static String reverseString(String str) {
      String rightStr;
      String leftStr;
      int length = str.length();
    
      if (length <= 1) {
         return str;
      }
    
      leftStr = str.substring(0, length / 2);
      rightStr = str.substring(length / 2, length);
    
      return reverseString(rightStr) + reverseString(leftStr);
    }

    ืื ื• ืžืฉืชืžืฉื™ื ื‘ืžืฉืชื ื™ื rightStr ื•- leftStr ื›ื“ื™ ืœืคืฆืœ ืืช ื”ืžื—ืจื•ื–ืช ื”ื ื›ื ืกืช ืœืฉื ื™ ื—ืœืงื™ื ืฉื•ื•ื™ื. ืœืื—ืจ ืžื›ืŸ, ื‘ืืžืฆืขื•ืช ื”ืคื™ืฆื•ืœ ื”ื–ื”, ืื ื• ืžืคืฆืœื™ื ืืช ื”ืžื—ืจื•ื–ืช ืœื—ืœืงื™ื ื”ืงื˜ื ื™ื ื‘ื™ื•ืชืจ ื”ืžืชื—ืœืงื™ื (ืชื• ืื—ื“). ืœืื—ืจ ืžื›ืŸ, ื”ืจืงื•ืจืกื™ื” ืžืชื—ื™ืœื” ืœื”ืชืžื•ื˜ื˜, ื•ืžื—ื–ื™ืจื” ืืช ื”ืชื•ื•ื™ื ื‘ืกื“ืจ ื”ืคื•ืš (ืืœื” ืฉื”ื™ื• ืžื™ืžื™ืŸ ื”ื•ืฆื‘ื• ืžืฉืžืืœ; ืืœื• ืฉื”ื™ื• ืžืฉืžืืœ ื”ื•ื ื—ื• ืžื™ืžื™ืŸ)

    ืืกื•ืจ ืœืฉื›ื•ื— ืฉื›ืœ ืจืงื•ืจืกื™ื” ื”ื™ื ืงืจื™ืื” ืžืจื•ื‘ื” ืœืฉื™ื˜ื”, ื•ื›ืชื•ืฆืื” ืžื›ืš ื”ื•ืฆืื” ืœื ืžื‘ื•ื˜ืœืช ืฉืœ ืžืฉืื‘ื™ื. ื•ื‘ื›ืŸ, ืื ืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ ืจืงื•ืจืกื™ื” ืขื ืชื ืื™ ื™ืฆื™ืื” ื‘ืœืชื™ ื ื™ืชื ื™ื ืœื”ืฉื’ื”, ืื– ื–ื” ื”ื ืชื™ื‘ ืืœ ื”ืื™ื ืกื•ืฃ ื•ืืœ StackOverflowError.

  • ืฉื™ื˜ื” ืฉื ื™ื”

    ื›ืืŸ ืฆืจื™ืš ืืจื’ื•ืžื ื˜ ื ื•ืกืฃ ื‘ืฉื™ื˜ื” - ืื™ื ื“ืงืก.

    ื›ืืฉืจ ืฉื™ื˜ื” ื–ื• ืžื•ืคืขืœืช, ื ื™ืชืŸ ืœื” ืื•ืจืš ืžื—ืจื•ื–ืช ืฉืœ -1:

    String str = "JavaRush forever";
    System.out.println(reverseString(str, str.length()-1));

    ื•ื”ืฉื™ื˜ื” ืขืฆืžื”:

    public static String reverseString(String str, int index) {
      if(index == 0){
         return str.charAt(0) + "";
      }
    
      char letter = str.charAt(index);
      return letter + reverseString(str, index-1);
    }

    ื”ืื™ื ื“ืงืก ืฉืœื ื• ืžืฉืžืฉ ื›ืื™ื ื“ื™ืงื˜ื•ืจ ืœืื™ื–ื” ืืœืžื ื˜ ืฉื•ืจื” ื ืฉืชืžืฉ ื›ืขืช (ื•ื ืฉืชืžืฉ ื‘ืืœืžื ื˜ื™ื ืžื”ืกื•ืฃ).

    ืœื›ืŸ, ืื ื• ืžื’ื“ื™ืจื™ื ืชื ืื™ ื™ืฆื™ืื” ื›ืืฉืจ ื”ืื™ื ื“ืงืก ืžื’ื™ืข ืœืืœืžื ื˜ ื”ืจืืฉื•ืŸ.

  • ืื ื• ืžื•ืกื™ืคื™ื ืืช ื”ืขืจื›ื™ื ืฉื”ื•ืฉื’ื• ื‘ืืžืฆืขื•ืช ืื™ื ื“ืงืก ื”ืื•ืชื™ื•ืช ืขื ื”ืชื•ืฆืื” ืฉืœ ื”ื‘ื™ืฆื•ืข ื”ืงื•ื“ื ืฉืœ ื”ืฉื™ื˜ื” ื•ืžื—ื–ื™ืจื™ื ืืช ื”ืชื•ืฆืื”.

  • ืฉื™ื˜ื” ืฉืœื•ืฉ

    public static String reverseString(String str) {
      if (str.length() <= 1) {
         return str;
      }
      return reverseString(str.substring(1)) + str.charAt(0);
    }

    ืฉื™ื˜ื” ื–ื• ื”ื™ื ื‘ืขืฆื ื”ืคืฉื•ื˜ื” ืžื‘ื™ืŸ ื”ืฉื™ื˜ื” ื”ืจืงื•ืจืกื™ื‘ื™ืช. ื•ื›ื–ื›ื•ืจ, ืคืฉื•ื˜ = ื”ื›ื™ ื˜ื•ื‘.

    ื‘ืžื”ืœืš ื›ืœ ืจื™ืฆื”, ืื ื• ืžืฆื™ื™ื ื™ื ืืช ืื•ืชื” ืžื—ืจื•ื–ืช, ืืš ืœืœื ื”ืืœืžื ื˜ ื”ืจืืฉื•ืŸ. ื›ืืฉืจ ืžื’ื™ืขื™ื ืœืชื ืื™ ื”ื™ืฆื™ืื” (ื›ืืฉืจ ื ืฉืืจ ืœื ื• ืชื• ืื—ื“), ื”ืจืงื•ืจืกื™ื” ืžืชื—ื™ืœื” ืœื”ืชืžื•ื˜ื˜, ื•ื”ืชื• ื”ืงื•ื“ื ืฉืœื ื”ื™ื” ื‘ืฉื™ืžื•ืฉ ื™ืชื•ื•ืกืฃ ืœื›ืœ ืชื•ืฆืื” ืฉืœืื—ืจ ืžื›ืŸ.

6. ืฉื™ืžื•ืฉ ื‘-XOR

XOR ื”ื™ื ืคืขื•ืœื” ืœื•ื’ื™ืช ื‘ืฉื™ื˜ืช ืกื™ื‘ื™ื•ืช. ื‘ืžืงืจื” ืฉืœ ืฉื ื™ ืžืฉืชื ื™ื, ื”ืชื•ืฆืื” ืฉืœ ืคืขื•ืœื” ื ื›ื•ื ื” ืื ื•ืจืง ืื ืื—ื“ ื”ื˜ื™ืขื•ื ื™ื ื ื›ื•ืŸ ื•ื”ืฉื ื™ ื”ื•ื ืฉืงืจ.
ื ื‘ ื™
0 0 0
0 1 1
1 0 1
1 1 0
ืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ืขื•ื“ ืขืœ ืคืขื•ืœื•ืช ืกื™ื‘ื™ื•ืช ื‘ืžืืžืจ ื–ื” . ื”ืคืชืจื•ืŸ ื”ื‘ื ื™ืกืชืžืš ืขืœ ื”ืขื•ื‘ื“ื” ืฉ:

(A XOR B) XOR B = A
(A XOR B) XOR A = B
ืื™ืš ืชื™ืจืื” ื”ืฉื™ื˜ื”:
public static String reverseString(String str) {
  char[] arr = str.toCharArray();
  int low = 0;
  int high = arr.length - 1;
  String result = "";
  while (low < high) {
     arr[low] = (char) (arr[low] ^ arr[high]);
     arr[high] = (char) (arr[low] ^ arr[high]);
     arr[low] = (char) (arr[low] ^ arr[high]);
     low++;
     high--;
  }
  for (int i = 0; i < arr.length; i++) {
     result = result + arr[i];
  }
  return result;
}
ื‘ื•ืื• ื ื‘ื™ืŸ ืžื” ืงื•ืจื” ื›ืืŸ. ืื ื• ื™ื•ืฆืจื™ื ืžืขืจืš ืžื”ืžื—ืจื•ื–ืช ื”ื ื›ื ืกืช. ืื ื• ื™ื•ืฆืจื™ื ืฉื ื™ ืžืฉืชื ื™ื, ื ืžื•ืš ื•ื’ื‘ื•ื” , ื”ืžืื—ืกื ื™ื ืื™ื ื“ืงืกื™ื ืœืžืขื‘ืจ ื”ืžืขืจืš. ื‘ื”ืชืื ืœื›ืš, ืื—ื“ ื™ืขื‘ื•ืจ ืžื”ื”ืชื—ืœื” ืœืกื•ืฃ - ืงื‘ืขื ื• ืœื• ืืช ื”ืขืจืš 0, ื”ืฉื ื™ - ืžื”ืกื•ืฃ ืœื”ืชื—ืœื”, ืงื‘ืขื ื• ืื•ืชื• arr.length - 1 . ืื ื—ื ื• ื ื›ื ืกื™ื ืœืœื•ืœืื” ืฉืชืชื ื’ืŸ ื›ืœ ืขื•ื“ ื”ืžื“ื“ ื”ื’ื‘ื•ื” ื’ื“ื•ืœ ืžื ืžื•ืš . ื›ืืŸ ืžืชื—ื™ืœื™ื ืœืงืจื•ืช ื”ื“ื‘ืจื™ื ื”ืžื”ื ื™ื - ื”ืฉื™ืžื•ืฉ ื‘-OR ื‘ืœืขื“ื™. ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ x ื•- y ื›ื“ื•ื’ืžื” . ื ื ื™ื— arr[high] = 'x'; ื”ืงื•ื“ ื”ื‘ื™ื ืืจื™ ืฉืœื• ื™ื”ื™ื” 1 1 1 1 0 0 0 ื‘ืฉืœื‘ ื–ื” arr[high] = 'n'; ืงื•ื“ ื‘ื™ื ืืจื™ - 1 1 0 1 1 1 0 ืžื” ื™ื”ื™ื” ืœื ื• ื‘ืคืขื•ืœื•ืช XOR ื‘ืœื•ืœืื”:
  1. arr[low] = (char) (arr[low] ^ arr[high]);

    
    arr[low] = 1 1 0 1 1 1 0
    arr[high] =1 1 1 1 0 0 0
    arr[low] = 0 0 1 0 1 1 0
  2. arr[high] = (char) (arr[low] ^ arr[high]);

    
    arr[low] =  0 0 1 0 1 1 0
    arr[high] = 1 1 1 1 0 0 0
    arr[high] = 1 1 0 1 1 1 0
  3. arr[low] = (char) (arr[low] ^ arr[high]);

    
    arr[low] =  0 0 1 0 1 1 0
    arr[high] = 1 1 0 1 1 1 0
    arr[low] =  1 1 1 1 0 0 0
ื›ืชื•ืฆืื” ืžื›ืš, ื”ื•ื“ื•ืช ืœืคืขื•ืœื•ืช ืืœื•, ื”ื—ืœืคื ื• ืืช ื”ืขืจื›ื™ื ืฉืœ ืฉื ื™ ืชืื™ ืžืขืจืš. arr[high] ื”ื•ื ื›ืžื” ืืœืžื ื˜ื™ื ืžืกื•ืฃ ื”ืžืขืจืš ื›ืžื• arr[low] ื”ื•ื ืžื”ื”ืชื—ืœื”. ืœื›ืŸ, ืื ื—ื ื• ืคืฉื•ื˜ ืžื—ืœื™ืคื™ื ืืช ื”ืืœืžื ื˜ื™ื ืขื ื”ืžื“ื“ื™ื ื”ืืœื”. ืœื“ื•ื’ืžื”, ื‘ื‘ื™ืฆื•ืข ื”ืจืืฉื•ืŸ ื‘ืžืฉืคื˜ "JavaRush forever" ื™ื•ื—ืœืคื• J ื•- r , ื‘ืฉื ื™ - a ื•- e ื•ื›ื•'. ืื ื™ืฉ ืœื ื• ืžืกืคืจ ืื™ ื–ื•ื’ื™ ืฉืœ ืชื•ื•ื™ื, ืื– ื›ืฉื ื’ื™ืข ืœืืœืžื ื˜ ืฉื ืžืฆื ื‘- ื‘ืืžืฆืข, ื ื–ืจืง ืžื”ืœื•ืœืื” (ื›ืœื•ืžืจ ืื™ืŸ ืฆื•ืจืš ืœืฉื ื•ืช ืืช ื”ืืœืžื ื˜ ื”ืืžืฆืขื™). ืื ื–ื” ื™ื”ื™ื” ืฉื•ื•ื”, ื ื–ืจืง ืœืื—ืจ ืขื™ื‘ื•ื“ ื›ืœ ื”ืืœืžื ื˜ื™ื. ื•ื‘ื›ืŸ, ืื—ืจื™ ื–ื” ืื ื—ื ื• ื ื›ื ืกื™ื ืœืœื•ืœืื” ืจื’ื™ืœื” ื•ื‘ื•ื ื™ื ืžื—ืจื•ื–ืช ืžืžืจื›ื™ื‘ื™ ื”ืžืขืจืš.
ื”ืขืจื•ืช
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION