来自牛客网
题目描述
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)。
示例 输入:abcdefg
输出:gfedcba
解决思路
(主函数中实现)1.从尾元素向前遍历字符串,打印每个位置的字符,实现字符串反转。
(方法的调用)2.将字符串转为字符数组
,实现反转效果后,将字符数组转为字符串输出。
①while循环双指针法实现,
②for循环需要注意第变量的终止范围(如数组长度为arr.length,第一个变量i小于arr.length/2,j为arr.length-1-i)。
(内置函数叠加)3.自己认为是内置函数叠加后的结果
实现代码
第一种方法
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
String str = sc.nextLine();
//str.length()获取字符串的长度
for (int i = str.length()-1; i >= 0; i--) {
System.out.print(str.charAt(i));
}
System.out.println();
}
}
第二种方法
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println("字符串反转后结果为:"+getString(str));
System.out.println("字符串反转后结果为:"+getString1(str));
}
public static String getString(String str1) { //char[]
char[] arr = str1.toCharArray();
for (int i = 0; i < arr.length / 2; i++) {
char tmp = arr[i];
arr[i] = arr[arr.length - 1 - i]; //相当于j=arr.length-1-i
arr[arr.length - 1 - i] = tmp;
}
return new String(arr); //将字符数组转换为字符串
}
public static String getString1(String str1) {
char[] arr = str1.toCharArray();
int i = 0;
int j = arr.length-1;
while(i<=j){
char tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
return new String(arr); //将函数返回的字符数组转换为字符串
}
第三种方法
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
StringBuffer str1 = new StringBuffer(str); //StringBuffer可以改变字符串的值
System.out.println("字符串反转后结果为: "+str1.reverse().toString());
}