为什么内存超限了,求高手解答(附代码)

信念、 2018-04-02 02:57:24
PAT上的一道题目,链接:https://www.patest.cn/contests/pat-b-practise/1084
代码如下,最后一个测试点过不去,说是内存超限


import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int d;
int n;
d = in.nextInt();
n = in.nextInt();
String s = "" + d;
n = n - 1;
while(n>0){
s = change(s);
n--;
}
System.out.println(s);
in.close();
}
public static String change(String s){
String temp = "";
char ch;
int count;
int i=0;
while(i<s.length()){
ch = s.charAt(i++);
count = 1;
while(i<s.length()&&ch==s.charAt(i)){
count++;
i++;
}
temp += "" + ch + count;
}
return temp;
}
}求解答,万分感谢!
...全文
2664 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zycxnanwang 2018-04-06
  • 打赏
  • 举报
回复
import java.util.*;

public class PAT {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
int n = sc.nextInt();


for(int i = 0; i < n-1; i++) {
str = method(str);
}
System.out.println(str);
}

public static String method(String input) {
StringBuilder str = new StringBuilder();

int i = 0, number = 1;
char b, a = input.charAt(i);
i++;

while(i < input.length()) {
b = input.charAt(i);
if(b == a) {
number++; i++;
}else {
str.append(a);
str.append(number);

a = input.charAt(i);
number = 1;
i++;
}
}
str.append(a); str.append(number);
return str.toString();
}
}


我去题目链接看了一下, 好像不太卡内存, 上述代码是我提交了的。 楼主可以参考一下!
另外,照我的经验, 楼主可能卡在了一个特殊的测试用例上了。 算法的问题

yjsl__ 2018-04-05
  • 打赏
  • 举报
回复
自动判题系统难就难在限制时间,限制内存,限制代码长度,由于3个限制,简单的操作都变得困难 简单来说,交换2个数时,不允许借助第三个变量(限制内存), 这道题,不要用字符串拼接,用char数组,算好最长的大小,一个正整数 N(<=40)
CrazyCoder1992 2018-04-05
  • 打赏
  • 举报
回复
题目没看明白,从代码层面提几点建议吧 1. 键盘输入BufferedReader比Scanner性能更好; 2. IO操作比计算操作性能开销大很多,建议先一次性读取完所有输入,关闭输入流后再进行计算操作; 3. 字符串拼接性能:String < StringBuffer < StringBuilder,在不用考虑线程安全的情况下使用StringBuilder性能最佳。
信念、 2018-04-04
  • 打赏
  • 举报
回复
引用 1 楼 lye2000000_super 的回复:
虚拟内存太小了呗
怎么优化,求指导
信念、 2018-04-04
  • 打赏
  • 举报
回复
引用 2 楼 qq_28960763 的回复:
代码没有显示出错啊
题目内存有限制,最后一个测试点,过不去
随便了擦 2018-04-04
  • 打赏
  • 举报
回复
代码没有显示出错啊
  • 打赏
  • 举报
回复
虚拟内存太小了呗

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧