Friday, March 13, 2020

Thuật toán đảo ngược chuỗi trong java

Viết chương trình java để đảo ngược Chuỗi (How to reverse a String in java). Có 6 cách để đảo ngược một Chuỗi trong java. Bạn nên biết ít nhất làm thế nào để đảo ngược một Chuỗi mà không sử dụng phương thức Reverse () trong java.
Trong hướng dẫn này, chúng tôi sẽ thảo luận về cách đảo ngược một chuỗi trong java. Mặc dù có nhiều cách để có được giải pháp nhưng chúng tôi đang chia sẻ 6 cách khác nhau để đảo ngược một chuỗi. Câu hỏi này thường được hỏi trong cuộc phỏng vấn kỹ thuật của java.
Thuật toán đảo ngược chuỗi trong java

Câu hỏi này rất dễ, nhưng vui lòng đánh dấu câu hỏi này trong danh sách việc cần làm của bạn trước khi tham dự bất kỳ cuộc phỏng vấn kỹ thuật nào trong java. Đầu tiên chúng ta sẽ hiểu câu hỏi bằng cách viết ví dụ.
Input :   Alive is awesome
Output: emosewa si evilA
Input : Be in present
Output : tneserp ni eB
Những điểm cần lưu ý trước khi thử Giải pháp:
1. Lớp String trong java không có phương thức Reverse (), lớp StringBuilder đã xây dựng phương thức Reverse ().
2. Lớp StringBuilder không có phương thức toCharArray (), trong khi lớp String không có phương thức toCharArray ().
Giải pháp 1: đảo ngược chuỗi trong java
1. Người dùng sẽ nhập chuỗi được đảo ngược.
2. Đầu tiên chúng ta sẽ chuyển đổi Chuỗi thành mảng ký tự bằng cách sử dụng phương thức lớp Chuỗi java tích hợp thànhCharArray ().
3. Sau đó, chúng tôi sẽ quét chuỗi từ đầu đến cuối và in từng ký tự một.
import java.io.*;
import java.util.*;
public class ReverString {
public static void main(String args[]){
String input ="";
System.out.println("Nhap chuoi can dao nguoc");
try{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
input = bufferedReader.readLine();
char []stt = input.toCharArray();
for(int i =stt.length-1 ;i>=0;i--){
System.out.print(stt[i]);
}
}catch(IOException e){
}
}
}
Giải pháp 2: Đảo ngược chuỗi trong java
1. Trong phương thức thứ hai, chúng ta sẽ sử dụng phương thức Reverse () dựng sẵn của lớp StringBuilder ,.
Lưu ý: Lớp String không có phương thức Reverse (). Vì vậy, chúng ta cần chuyển đổi chuỗi đầu vào thành StringBuilder, điều này đạt được bằng cách sử dụng phương thức chắp thêm của StringBuilder.

2. Sau đó in ra các ký tự của chuỗi đảo ngược bằng cách quét từ đầu tiên cho đến chỉ mục cuối cùng.
public class reverseString {
 public static void main(String[] args) {
  String input="AliveisAwesome";
  StringBuilder input1 = new StringBuilder();
  input1.append(input);
  input1=input1.reverse();
  for (int i=0;i<input1.length();i++)
  System.out.print(input1.charAt(i));
 }}
 Giải pháp 3: Viết chương trình đảo ngược chuỗi trong java
 1. Chuyển đổi chuỗi đầu vào thành mảng ký tự bằng cách sử dụng phương thức toCharArray () được xây dựng trong lớp Chuỗi.
2. Trong phương pháp này, chúng tôi sẽ quét mảng ký tự từ cả hai phía, nghĩa là từ chỉ mục bắt đầu (bên trái) cũng như từ chỉ mục cuối cùng (bên phải).
3. Đặt chỉ mục bên trái bằng 0 và chỉ mục bên phải bằng độ dài của chuỗi -1.
4. Hoán đổi các ký tự của quá trình quét chỉ mục bắt đầu với lần quét chỉ mục cuối cùng lần lượt. Sau đó, tăng chỉ số bên trái thêm 1 (trái ++) và giảm bên phải 1 tức là (phải--) để chuyển sang các ký tự tiếp theo trong mảng ký tự.
5. Tiếp tục cho đến bên trái nhỏ hơn hoặc bằng bên phải.
public class reverseString {
 public static void main(String[] args) {
    String input = "Be in present";
    char[] temparray= input.toCharArray();
    int left,right=0;
    right=temparray.length-1;
    for (left=0; left < right ; left++ ,right--)
    {
     // Swap values of left and right
     char temp = temparray[left];
     temparray[left] = temparray[right];
     temparray[right]=temp;
    }
    for (char c : temparray)
     System.out.print(c);
    System.out.println();
   }}
 Giải pháp 4: Đảo ngược chuỗi
 1. Chuyển đổi chuỗi đầu vào thành mảng ký tự bằng cách sử dụng phương thức được xây dựng trong toCharArray ().
đảo ngược một chuỗi trong java với ví dụ
2. Sau đó thêm các ký tự của mảng vào đối tượng LinkedList. Chúng tôi đã sử dụng LinkedList vì nó duy trì thứ tự chèn của các giá trị đầu vào.
3. Java cũng đã xây dựng phương thức Reverse () cho lớp Bộ sưu tập. Do phương thức Reverse () của lớp Collections lấy một đối tượng danh sách, để đảo ngược danh sách, chúng ta sẽ truyền đối tượng LinkedList là một loại danh sách các ký tự.
4. Chúng ta sẽ tạo đối tượng ListIterator bằng cách sử dụng phương thức listIterator () trên đối tượng LinkedList.
Đối tượng ListIterator được sử dụng để lặp qua danh sách.
5. Đối tượng ListIterator sẽ giúp chúng ta lặp lại danh sách đảo ngược và in từng cái một lên màn hình đầu ra.
public class reverseString {
 public static void main(String[] args) {
     String input = "Be in present";
     char[] hello=input.toCharArray();
     List<Character> trial1= new LinkedList<>();
     for(char c: hello)
     trial1.add(c);
     Collections.reverse(trial1);
     ListIterator li = trial1.listIterator();
     while(li.hasNext())
    {System.out.print(li.next());}
   }}
Giải pháp 5: reverse a String in java
1. Trong phương thức thứ năm, chúng ta sẽ sử dụng đệ quy để đảo ngược chuỗi.
public class reverseString{
 public static void main(String[] args) {
  String input = "AliveisAwesome";
  //create Method and pass input string as parameter
  String reversed = reverseString(input);
  System.out.println("The reversed string is: " + reversed);

 }

 //Method take string parameter and check string is empty or not
 public static String reverseString(String input)
 {
  if (input.isEmpty()){
   return input;
  }
  //Calling Function Recursively
  return reverseString(input.substring(1)) + input.charAt(0);
 }

}
Giải pháp 6: Thuật toán đảo ngược chuỗi
1. Phương thức cuối cùng là chuyển đổi chuỗi thành byte. Phương thức getBytes () được sử dụng để chuyển đổi chuỗi đầu vào thành byte [].
2. Sau đó, chúng ta sẽ tạo một byte tạm thời [] có độ dài bằng với độ dài của chuỗi đầu vào.
3. Chúng tôi sẽ lưu trữ các byte (mà chúng tôi nhận được bằng cách sử dụng phương thức getBytes ()) theo thứ tự ngược lại thành byte tạm thời [].
public class reverseString {
 public static void main(String[] args) {
  String input = "Be in present";
  byte [] strAsByteArray = input.getBytes();
  byte [] result = new byte [strAsByteArray.length];
 
  for(int i = 0; i<strAsByteArray.length; i++){
  result[i] = strAsByteArray[strAsByteArray.length-i-1];
  }
  System.out.println( new String(result));
   }}

No comments:

Post a Comment