HJ12 字符串反转
描述
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
输入描述:
输入一行,为一个只包含小写字母的字符串。
输出描述:
输出该字符串反转后的字符串。
示例:
输入:abcd 输出:dcba
分析:
1.使用StringBuilder类的reverse方法进行逆序。
2.使用for循环。
代码:
方法一:使用StringBuilder类的reverse方法进行逆序。
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str=sc.next();
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)<97||str.charAt(i)>122||str.length()>1000){
System.out.println("输入非法!");
return;
}
}
StringBuilder sb=new StringBuilder(str);
sb=sb.reverse();
str=sb.toString();
System.out.println(str);
}
}
方法二:使用for循环。
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str=sc.next();
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)<97||str.charAt(i)>122||str.length()>1000){
System.out.println("输入非法!");
return;
}
}
for (int i = str.length()-1; i >=0; i--) {
System.out.print(str.charAt(i));
}
}
}
大佬代码:
使用栈的先进后出特性。
import java.util.Scanner;
import java.util.Stack;
/**
* @author lxg
* @description 字符串反转方式二
* @date 2021/9/27
*/
public class Main{
public static void main(String[] args) {
Stack stack = new Stack();
Scanner in = new Scanner(System.in);
String s = in.nextLine();
for (int i = 0; i <s.trim().length() ; i++) {
stack.push(s.charAt(i));
}
while(!stack.empty()){
System.out.print(stack.pop());
}
}
}
使用原理来编写。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String a=in.next();
System.out.println(getString(a));
}
public static String getString(String a){
char[] chararr = a.toCharArray();
for(int i=0;i<chararr.length/2;i++){
char tmp=chararr[i];
chararr[i]=chararr[chararr.length-1-i];
chararr[chararr.length-1-i]=tmp;
}
return new String(chararr);
}
}
HJ13 句子逆序
描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足 1≤𝑛≤1000 1≤n≤1000
注意本题有多组输入
输入描述:
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
输出描述:
得到逆序的句子
示例:
输入:I am a boy 输出:boy a am I
输入:nowcoder 输出:nowcoder
分析:
1.使用split函数分离单词。
2.使用for循环逆序输出。
代码:
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str=sc.nextLine();
String[] s=str.split(" ");
for (int i = s.length-1; i >=0; i--) {
System.out.print(s[i]+" ");
}
}
}
大佬代码:
使用StringBuilder
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String value = br.readLine();
String[] values = value.split(" ");
StringBuilder sb = new StringBuilder();
for(int i=1;i<=values.length;i++){
sb.append(values[values.length-i] + " ");
}
System.out.println(sb.toString());
br.close();
}
}