我创建了一个小代码,要求用户输入任何单词,然后它会反转它。我无法弄清楚如何扭转它,所以请帮助。
这是我的代码:
package Test;
import java.util.Scanner;
public class TestMain {
public static void main(String[]args){
String word = getWord();
char[]wordArray;
wordArray = word.toCharArray();
System.out.print("NORMAL WORD: " + word + "\n");
System.out.print("REVERSE WORD: ");
}
public static String getWord(){
Scanner hold = new Scanner(System.in);
String word;
System.out.print("Enter a word:");
word = hold.nextLine();
return word;
}
}
答案 0 :(得分:2)
StringBuilder有一个反向方法。
System.out.print("REVERSE WORD: " + new StringBuilder(word).reverse().toString());
或者如果您不想使用内置方法
String result= "";
for(int i=word.length(); i>0; i--) {
result+= word.charAt(i-1);
}
System.out.print("REVERSE WORD: " + result);
答案 1 :(得分:1)
这样做:
1.将字符串转换为字符数组
2.交换元素(第一个和最后一个 - >第二个和第二个 - >> ......直到中间)
3.您将获得O(n / 2)= O(n)的线性复杂度。
public static String reverseWord(String str)
{
if(str.length()>0)
{
char arr[] = str.toCharArray();
int length = arr.length;
for(int i=0; i<length/2; i++)
{
char temp = arr[i];
arr[i] = arr[length-i-1];
arr[length-i-1] = temp;
}
return new String(arr);
}
return str;
}
答案 2 :(得分:0)
我使用StringBuilder构造反向字符串。 在你的主要方法。
String word = getWord();
StringBuilder sb = new StringBuilder();
for(char c : word.toCharArray()) {
sb.insert(0, c);
}
String reversed = sb.toString();
System.out.print("NORMAL WORD: " + word);
System.out.print("REVERSE WORD: " + reversed);
答案 3 :(得分:0)
让我们看看<div class="special panel_buttons arrowBtn" id='user_requests_button'>
User Requests<div class="admin_alert_out_panel">2</div>
</div>
中的代码:
main
char[]wordArray = word.toCharArray();
是一组String
,一个接一个。
我们需要在循环中将每个char
添加到结果的开头:
char
这会导致第一个String result = "";
for(char wordChar : word.toCharArray()) {
result = wordChar + result;
}
最后一个,第二个变为倒数第二个等。这样我们就可以颠倒char
的顺序。
答案 4 :(得分:0)
public static void main(String args[]) {
String a = "12345";
char [] original= a.toCharArray();
char[] reverse = new char[a.length()];
int j =0;
for(int i=reverse.length-1; i>=0; i--) {
reverse[j] = original[i];
j++;
}
System.out.println(new String(reverse));
}
答案 5 :(得分:0)
public class test {
public static void main(String[] args) {
String word = "Stack Overflow";
char[] wordArray = word.toCharArray();
System.out.println("NORMAL WORD=" + Arrays.toString(wordArray));
test.reverse(wordArray);
System.out.println("REVERSE WORD=" + Arrays.toString(wordArray));
}
public static void reverse(char[] array) {
if (array == null) {
return;
}
int i = 0;
int j = array.length - 1;
char tmp;
while (j > i) {
tmp = array[j];
array[j] = array[i];
array[i] = tmp;
j--;
i++;
}
}
}
输出:
NORMAL WORD=[S, t, a, c, k, , O, v, e, r, f, l, o, w]
REVERSE WORD=[w, o, l, f, r, e, v, O, , k, c, a, t, S]