李敏
日历
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
统计
随笔 - 1
文章 - 40
评论 - 4
引用 - 0
导航
BlogJava
首页
发新随笔
发新文章
联系
聚合
管理
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
文章分类
Head First(2)
(rss)
XML(2)
(rss)
应用配置(4)
(rss)
开发工具配置(9)
(rss)
算法(21)
(rss)
编码经验(1)
(rss)
项目代码(1)
(rss)
文章档案
2012年10月 (1)
2012年9月 (2)
2012年4月 (1)
2011年12月 (1)
2011年11月 (2)
2010年10月 (1)
2010年9月 (1)
2010年8月 (5)
2010年1月 (3)
2009年12月 (1)
2009年9月 (4)
2009年8月 (2)
2009年7月 (3)
2009年3月 (5)
2009年2月 (3)
2009年1月 (2)
2008年12月 (1)
2008年10月 (2)
2008年5月 (1)
相册
Oracle
Spket
收藏夹
开发工具(1)
(rss)
它山之石
庄周梦蝶,孰蝶是我,我是孰蝶?一梦至今,蝶我已难分
聚贤庄
搜索
最新评论
1. re: Io 异常: The Network Adapter could not establish the connection(转)[未登录]
评论内容较长,点击标题查看
--liu
2. re: Hibernate的Update语句的多属性更新
还是不太明白使用,能帮我吗?379899146
--Sky、超儿
3. re: MyEclipse Enterprise Workbench 8.0 注册码(转)
@byron
不好意思,忘了说明了,这个是我在网上找到的!
--李敏
4. re: MyEclipse Enterprise Workbench 8.0 注册码[未登录]
你太强大了哥们
--byron
面试题(一)———截取字符串
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
String str
=
"
abc好吗d
"
;
int
byteCount
=
6
;
String newStr
=
split(str,byteCount);
System.out.println(str);
System.out.println(byteCount);
System.out.println(newStr);
功能模块:
/** */
/**
* 移除截取的字节中的一个汉字单字节
*/
private
byte
[] removeInvalidByte(
byte
[]byteArray)
{
int
newLen
=
byteArray.length
-
1
;
byte
[]newByteArray
=
Arrays.copyOf(byteArray,newLen);
return
newByteArray;
}
/** */
/**
* 查找截取的字节中是否保留了一个汉字的单字节
*/
private
boolean
haveFullChineseByte(
byte
[]byteArray)
{
int
count
=
0
;
for
(
byte
word:byteArray)
{
if
(word
<
0
)
{
count
++
;
}
}
boolean
isFull
=
(count
%
2
!=
0
);
return
isFull;
}
private
byte
[] getSplitBytes(String str,
int
byteCount)
{
byte
byteArray[]
=
str.getBytes();
byte
newByteArray[]
=
Arrays.copyOf(byteArray,byteCount);
/** */
/**
for(int i=0;i<byteCount;i++){
byte word=byteArray[i];
newByteArray[i]=word;
}
*/
return
newByteArray;
}
/** */
/**
* 截取一个字符串中指定长度的字节(如果最后一位为一个汉字的单字节则进行忽略)
*/
private
String split(String str,
int
byteCount)
{
byte
newByteArray[]
=
getSplitBytes(str,byteCount);
if
(haveFullChineseByte(newByteArray))
{
newByteArray
=
removeInvalidByte(newByteArray);
}
String newStr
=
new
String(newByteArray);
return
newStr;
}
posted on 2011-11-17 20:02
李敏
阅读(233)
评论(0)
编辑
收藏
所属分类:
算法
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
面试题(二)———斐波那契数列
面试题(一)———截取字符串
对比两个数组中的数,找出有重复的数
求指定日期在一个星期中的天数
处理重复数
验证连续数
求一定范围内的素数
迅雷面试题
杨辉三角
自定义排序输出
Copyright © 李敏
Powered by:
博客园
模板提供:
沪江博客