Также существует сложный способ сделать это в компоновщике с участием двух библиотек-заглушек.
Библиотека # 1 связана с библиотекой хоста и предоставляет переопределенный символ под другим именем.
Библиотека # 2 связана с библиотекой # 1, перехватывает вызов и вызывает переопределенную версию в библиотеке # 1.
Будьте очень осторожны с порядками ссылок здесь или не будет работать.
1. Использование массива символов:
public String reverseString(String inputString) {
char[] inputStringArray = inputString.toCharArray();
String reverseString = "";
for (int i = inputStringArray.length - 1; i >= 0; i--) {
reverseString += inputStringArray[i];
}
return reverseString;
}
2. Использование StringBuilder:
public String reverseString(String inputString) {
StringBuilder stringBuilder = new StringBuilder(inputString);
stringBuilder = stringBuilder.reverse();
return stringBuilder.toString();
}
ИЛИ
return new StringBuilder(inputString).reverse().toString();
Так как приведенный ниже метод (с использованием XOR ) для обращения строки не указан, я прилагаю этот метод для обращения строки.
Алгоритм основан на:
1. (A XOR B) XOR B = A
2. (A XOR B) XOR A = B
Фрагмент кода:
public class ReverseUsingXOR {
public static void main(String[] args) {
String str = "prateek";
reverseUsingXOR(str.toCharArray());
}
/*Example:
* str= prateek;
* str[low]=p;
* str[high]=k;
* str[low]=p^k;
* str[high]=(p^k)^k =p;
* str[low]=(p^k)^p=k;
*
* */
public static void reverseUsingXOR(char[] str) {
int low = 0;
int high = str.length - 1;
while (low < high) {
str[low] = (char) (str[low] ^ str[high]);
str[high] = (char) (str[low] ^ str[high]);
str[low] = (char) (str[low] ^ str[high]);
low++;
high--;
}
//display reversed string
for (int i = 0; i < str.length; i++) {
System.out.print(str[i]);
}
}
}
Выход:
keetarp
//Solution #1 -- Using array and charAt()
String name = "reverse"; //String to reverse
Character[] nameChar = new Character[name.length()]; // Declaring a character array with length as length of the String which you want to reverse.
for(int i=0;i<name.length();i++)// this will loop you through the String
nameChar[i]=name.charAt(name.length()-1-i);// Using built in charAt() we can fetch the character at a given index.
for(char nam:nameChar)// Just to print the above nameChar character Array using an enhanced for loop
System.out.print(nam);
//Solution #2 - Using StringBuffer and reverse ().
StringBuffer reverseString = new StringBuffer("reverse");
System.out.println(reverseString.reverse()); //reverse () Causes the character sequence to be replaced by the reverse of the sequence.
Простой Для цикла в java
public void reverseString(char[] s) {
int length = s.length;
for (int i = 0; i < s.length / 2; i++) {
// swaping character
char temp = s[length - i - 1];
s[length - i - 1] = s[i];
s[i] = temp;
}
}
package ThingsInArray;
public class MagicWithSelectionSort {
public static void main(String[] arg) {
isSort("uhsnamiH");
}
private static void isSort(String name) {
String revName="";
for (int i = name.toCharArray().length-1; i >0 ; i--) {
revName=revName+name.charAt(i);
}
System.out.println(revName);
}
}