ECNU 2033 反转字符串
ECNU 2033 反转字符串
链接
https://acm.ecnu.edu.cn/problem/2033/
题目
单点时限: 2.0 sec
内存限制: 256 MB
给你一个字符串,长度不超过 10000,反转输出这个字符串。
输入格式
每次一行字符串,有空格。
多 Case,处理到文件结束。
输出格式
每次一行,输出反转后的字符串。
样例
input
abcd
abcd a
output
dcba
a dcba
思路
这题就挺秃然的,超内存两次,最后调了一手api,然后知道了stringbuffer比string省内存多了,所以java的坑还是蛮多的。
直接把字符串读取为stringbuffer,然后头尾交换,0和n-1,1和n-2,一直到中间,最后把新的stringbuffer转为string输出即可。
我本来string直接操作,内存占用大概有十倍,我也不知道为什么。
代码
public static void fun() {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str;
str = sc.nextLine();
String reverse = new StringBuffer(str).reverse().toString();
//直接api
StringBuffer sb = new StringBuffer(str);
int n= sb.length();
for(int i=0;i<n/2;i++)
{
char temp = sb.charAt(i);
sb.setCharAt(i,sb.charAt(n-i-1));
sb.setCharAt(n-i-1,temp);
}
System.out.println(sb.toString());
//交换
}
}