交换字符串中的单词
Swap the word in the String
input:-
1
Ans kot
Output:-
kot Ans
输入:
输入的第一行包含测试用例的数量。每个测试用例由包含字符串的一行组成。
输出:
输出如上所述交换单词的字符串。**
代码:-
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
StringBuffer result = new StringBuffer();
for (int i = 0; i < a; i++) {
String b = sc.next();
String my[] = b.split(" ");
StringBuffer r = new StringBuffer();
for (int j = my.length - 1; j > 0; j--) {
r.append(my[j] + " ");
}
r.append(my[0] + "\n");
result.append(r.toString());
}
System.out.println(result.toString());
}
我的代码有什么问题?以上是我正在尝试的代码。
接受 String
输入和 return String
每个字符的倒序。
String reverse(String x) {
int i = x.length() - 1;
StringBuilder y = new StringBuilder();
while (i >= 0) {
y.append(x.charAt(i));
i--;
}
return y.toString();
}
String my[] = b.split(" ");
StringBuffer r = new StringBuffer();
for (int j = my.length - 1; j > 0; j--) {
r.append(my[j] + " ");
}
您的这段代码只会反转句子 "word by word" 而不是 "character by character"。因此,您需要先反转字符串 (my[j]
),然后再将其附加到 StringBuffer
使用这个
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
sc.nextLine();
StringBuffer result = new StringBuffer();
for (int i = 0; i < a; i++) {
String b = sc.nextLine();
String my[] = b.split(" ");
StringBuffer r = new StringBuffer();
for (int j = my.length - 1; j > 0; j--) {
r.append(my[j] + " ");
}
r.append(my[0] + "\n");
result.append(r.toString());
}
System.out.println(result.toString());
}
public static String reverseWords(String input) {
Deque<String> words = new ArrayDeque<>();
for (String word: input.split(" ")) {
if (!word.isEmpty()) {
words.addFirst(word);
}
}
StringBuilder result = new StringBuilder();
while (!words.isEmpty()) {
result.append(words.removeFirst());
if (!words.isEmpty()) {
result.append(" ");
}
}
return result.toString();
}
您可以运行此代码:
String[] splitted = yourString.split(" ");
for (int i = splitted.length-1; i>=0; i--){
System.out.println(splitted[i]);
}
多项:
您正在使用 next
api 它将只读取您逐字键入的字符串,然后循环直到 a 即在您的示例中只读一次。因此,请改用 nextLine
api ,它将读取整行而不是一个单词,然后按 space:
拆分
String b = sc.nextLine();
您正在使用 nextInt
api 读取输入,然后输入,您有时可能会在使用 [=12 读取下一个标记时最终得到 return 字符=] api。而是使用:
int a = Integer.parseInt(sc.nextLine());
- 您正在使用 StringBuffer,它有获取互斥锁的开销,因此应该使用 StringBuilder。
Code:-
Scanner sc =new Scanner(System.in);
int a =Integer.parseInt(sc.nextLine());
StringBuffer result= new StringBuffer();
for (int i = 0; i <a; i++) {
String b=sc.nextLine();
String my[]= b.split(" ");
StringBuffer r = new StringBuffer();
for (int j = my.length-1; j >0; j--) {
r.append(my[j]+" ");
}
r.append(my[0] + "\n");
result.append(r.toString());
}
System.out.println(result.toString());
enter code here
input:-
1
Ans kot
Output:-
kot Ans
输入: 输入的第一行包含测试用例的数量。每个测试用例由包含字符串的一行组成。
输出: 输出如上所述交换单词的字符串。**
代码:-
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
StringBuffer result = new StringBuffer();
for (int i = 0; i < a; i++) {
String b = sc.next();
String my[] = b.split(" ");
StringBuffer r = new StringBuffer();
for (int j = my.length - 1; j > 0; j--) {
r.append(my[j] + " ");
}
r.append(my[0] + "\n");
result.append(r.toString());
}
System.out.println(result.toString());
}
我的代码有什么问题?以上是我正在尝试的代码。
接受 String
输入和 return String
每个字符的倒序。
String reverse(String x) {
int i = x.length() - 1;
StringBuilder y = new StringBuilder();
while (i >= 0) {
y.append(x.charAt(i));
i--;
}
return y.toString();
}
String my[] = b.split(" ");
StringBuffer r = new StringBuffer();
for (int j = my.length - 1; j > 0; j--) {
r.append(my[j] + " ");
}
您的这段代码只会反转句子 "word by word" 而不是 "character by character"。因此,您需要先反转字符串 (my[j]
),然后再将其附加到 StringBuffer
使用这个
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
sc.nextLine();
StringBuffer result = new StringBuffer();
for (int i = 0; i < a; i++) {
String b = sc.nextLine();
String my[] = b.split(" ");
StringBuffer r = new StringBuffer();
for (int j = my.length - 1; j > 0; j--) {
r.append(my[j] + " ");
}
r.append(my[0] + "\n");
result.append(r.toString());
}
System.out.println(result.toString());
}
public static String reverseWords(String input) {
Deque<String> words = new ArrayDeque<>();
for (String word: input.split(" ")) {
if (!word.isEmpty()) {
words.addFirst(word);
}
}
StringBuilder result = new StringBuilder();
while (!words.isEmpty()) {
result.append(words.removeFirst());
if (!words.isEmpty()) {
result.append(" ");
}
}
return result.toString();
}
您可以运行此代码:
String[] splitted = yourString.split(" ");
for (int i = splitted.length-1; i>=0; i--){
System.out.println(splitted[i]);
}
多项:
您正在使用
拆分next
api 它将只读取您逐字键入的字符串,然后循环直到 a 即在您的示例中只读一次。因此,请改用nextLine
api ,它将读取整行而不是一个单词,然后按 space:String b = sc.nextLine();
您正在使用
nextInt
api 读取输入,然后输入,您有时可能会在使用 [=12 读取下一个标记时最终得到 return 字符=] api。而是使用:int a = Integer.parseInt(sc.nextLine());
- 您正在使用 StringBuffer,它有获取互斥锁的开销,因此应该使用 StringBuilder。
Code:-
Scanner sc =new Scanner(System.in);
int a =Integer.parseInt(sc.nextLine());
StringBuffer result= new StringBuffer();
for (int i = 0; i <a; i++) {
String b=sc.nextLine();
String my[]= b.split(" ");
StringBuffer r = new StringBuffer();
for (int j = my.length-1; j >0; j--) {
r.append(my[j]+" ");
}
r.append(my[0] + "\n");
result.append(r.toString());
}
System.out.println(result.toString());
enter code here