如何使用java反转数组中的字符元素?
我创建了一个小代码,要求用户输入任何单词,然后将其反转。我想不出如何扭转局面,因此非常感谢您的帮助 这是我的密码:如何使用java反转数组中的字符元素?,java,arrays,string,char,reverse,Java,Arrays,String,Char,Reverse,我创建了一个小代码,要求用户输入任何单词,然后将其反转。我想不出如何扭转局面,因此非常感谢您的帮助 这是我的密码: package Test; import java.util.Scanner; public class TestMain { public static void main(String[]args){ String word = getWord(); char[]wordArray; wordArray = word.toCharArray();
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;
}
}
我使用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);
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);
让我们看看
main
中的代码:
char[]wordArray = word.toCharArray();
String
是一组char
s,一个接一个
我们需要将每个char
添加到循环结果的开头:
String result = "";
for(char wordChar : word.toCharArray()) {
result = wordChar + result;
}
这将导致第一个字符排在最后,第二个字符排在第二位,以此类推。这样我们可以颠倒字符串的顺序
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));
}
输出:
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]
这样做:
1.将字符串转换为字符数组。
2.交换元素(第一个和最后一个->第二个和第二个->直到中间)。
3.您将得到O(n/2)=O(n)的线性复杂度
publicstaticstringreverseeword(stringstr)
{
如果(str.length()>0)
{
char arr[]=str.toCharArray();
int-length=arr.length;
对于(int i=0;i创建第二个数组,在第一个数组上循环,将每个字符放置在新数组的另一端…可能有点像旁注,但您可以将其更改为System.out.println(),而不是在print语句的末尾添加“\n”,它将自动在末尾添加新行。
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]
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;
}