| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1852 人关注过本帖
标题:[求助]一道java编程的面试题
只看楼主 加入收藏
阅逡
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-12-1
收藏
得分:0 

2007-01-10 01:43
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 
用我的方法写了个完整的,谁有其他方法交流下!
class Test
{
public static String subString(String s,int i)
{
char[] ct=s.toCharArray();
int sum=0;
char[] temp=new char[s.length()];
if(i<=0)
return "";
if(i==1&&Character.getNumericValue(ct[0])==-1)
return "";
for(int c=0;c<ct.length;c++)
{
if(Character.getNumericValue(ct[c])==-1)
sum+=2;
else
sum+=1;
temp[c]=ct[c];
if(c<ct.length-1&&Character.getNumericValue(ct[c+1])==-1)
{
if(sum+2>i)
break;
}
if(sum>=i)
break;
}
return new String(temp);
}

public static void main(String[] args)
{
String ititle="我ABC汉DEF";
System.out.println(subString(ititle,6));
}
}

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2007-01-10 10:14
gantz
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-11-28
收藏
得分:0 

我当时是先将String 转化为byte数组,然后取它截取位置的值拿出来比较,如果是在a,z之间或A,Z之间,就保留;否则就取一位做同样比较,如果不是在a,z之间或A,Z之间,同样保留;如果是的话就判断是汉字,所以不取这一位.最后再将byte数组转化为String
想法跟楼上差不多,不过也不知道对不对.去试验下.

2007-01-10 12:45
WestNet
Rank: 1
等 级:新手上路
帖 子:174
专家分:0
注 册:2006-10-31
收藏
得分:0 
有这么复杂吗?

不灰心等待,痛苦也忍耐。
2007-01-10 13:21
gantz
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-11-28
收藏
得分:0 

我当时笔试时也就只是想到这个了,哪位大狭给点更好的点子啊

写了程序之后才发现我那办法行不通,原因在于如果你判断到了那个是汉字,但无法判定是否删除或保留.

[此贴子已经被作者于2007-1-10 16:18:27编辑过]

2007-01-10 16:07
gantz
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-11-28
收藏
得分:0 

用一个for循环搞定
[CODE]
import java.io.*;

public class SelectString
{
private String teststring;
public SelectString( String test )
{
this.teststring = test;
}
public String select( int i ) throws IOException
{
byte[] temp = teststring.getBytes();
int kick = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
for( int m = 0; m < i; m ++ )
{
if ( isChinese( temp[ m ] ) )
kick ++;
}
if ( kick % 2 == 0 )
bos.write( temp, 0, i );
else
bos.write( temp, 0, i -1 );
byte[] result = bos.toByteArray();
return new String( result );
}
private boolean isChinese( byte test )
{
//char num = (char)test;
if( ( test > 'a'-1 && test < 'z'-1 ) || ( test > 'A'-1 && test < 'Z'-1 ) )
return false;
else
return true;
}
public static void main( String[] args ) throws IOException
{
SelectString selectstring = new SelectString( "A章晨BC" );
System.out.println( selectstring.select( 3 ) );
}
}
[/CODE]

2007-01-10 16:30
快速回复:[求助]一道java编程的面试题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028462 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved