论坛首页 Java企业应用论坛

一个java面试题

浏览 13803 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-06-18  
String temp = "a b c e f g h i j k l m n o p q r s t u v w x y z ";
StringBuffer sb = new StringBuffer(26);
char space = ' ';

for (int i = 0; i < temp.length(); i++) {
if(temp.charAt(i) != space )
{
sb.append(temp.charAt(i));
}
}
不太明白不能复制是啥意思?
0 请登录后投票
   发表时间:2012-06-18  
我感觉这道题是搞c的人面的,因为在c程序员中
无非是两大问题
1.字符串处理
2.指针处理。。。。。。。。。
0 请登录后投票
   发表时间:2012-06-18  
C 里因为可以使用MEM MOVE 出这个题目才有意义吧。Java 中,从头读到尾,非空就写到文件里好了,文件又不占内存。
0 请登录后投票
   发表时间:2012-06-18  
在java里面 String的本质上 char数组
0 请登录后投票
   发表时间:2012-06-18  
内存接近用完了 所以不能复制 弄到文件中 分别小部分小部分的处理这思路可以
0 请登录后投票
   发表时间:2012-06-18  
我也觉得是写到文件里面,再读回来
0 请登录后投票
   发表时间:2012-06-18   最后修改:2012-06-18
ray_linn 写道
C 里因为可以使用MEM MOVE 出这个题目才有意义吧。Java 中,从头读到尾,非空就写到文件里好了,文件又不占内存。

打开文件难道不占内存吗?求波解
0 请登录后投票
   发表时间:2012-06-19  
这应该是一个在线性表里面,删除data==x(可能重复)的问题。。。根据题目意思,内存几乎占满,就是说要在空间复杂度为O(1)或者稍微多一点的情况下,将空格删除。

首先,看java的API知道,String str = "abc"; 等效于 char data[] = {'a','b','c'};String str = new String(data);
那么,我们的问题就转化成,在数组data[]中删除空格字符。以下只提供思路,实现代码大家自己去试验了:)

我们现在其实已知,data[]数组的长度,假设为length,那么只需要对data[]数组循环,把空格字符交换到数组尾,最后可以得到不是空格的字符的个数。这个个数就是新的数组的长度,再重置data[]数组的长度即可。
0 请登录后投票
   发表时间:2012-06-19  
不知道这个题目要考的什么。。。
没有内存,基本什么都干不了,猜测题目可能要的是下面的这个?
static void change(){
		String str = new String("a  a  b  c j iz c q cc  dd");
		try {
			Field f_value = str.getClass().getDeclaredField("value");
			Field f_count = str.getClass().getDeclaredField("count");
			f_value.setAccessible(true);
			f_count.setAccessible(true);
			int count = f_count.getInt(str);
			char[] chars =(char[])f_value.get(str);
			for(int i=0;i<chars.length;i++){
				while(chars[i]==' '){
					for(int j=i+1;j<chars.length;j++){
						chars[j-1]=chars[j];
					}
					count--;
				}
			}
			f_count.setInt(str, count);
			System.out.println(str);
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
	}
0 请登录后投票
   发表时间:2012-06-19   最后修改:2012-06-19
cttnbcj 写道
ray_linn 写道
C 里因为可以使用MEM MOVE 出这个题目才有意义吧。Java 中,从头读到尾,非空就写到文件里好了,文件又不占内存。

打开文件难道不占内存吗?求波解


你不会用 Console 直接print出来,用管道获取。。连文件操作都免。

java XXXX.class > save.txt


这种题叫挫题。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics