一道有趣的面试编程
题目如下:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,
如再输入“我ABC汉DEF”,6,应该输出为“我ABC” 而不是“我ABC+汉的半个”。
我大概前后编译运行了7次 找到了一种完整的实现方式
代码如下:
package test;
class SplitString
{
String SplitStr;
int SplitByte;
public SplitString(String str,int bytes)
{
SplitStr=str;
SplitByte=bytes;
System.out.println(“The String is:’”+SplitStr+”‘;SplitBytes=”+SplitByte);
}
public void SplitIt()
{
int loopCount;
loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte)SplitStr.length()/Split
Byte+1);
System.out.println(“Will Split into “+loopCount);
for (int i=1;i<=loopCount ;i++ )
{
if (i==loopCount){
System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
} else {
System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
}
}
}
public static void main(String[] args)
{
SplitString ss = new SplitString(“test中dd文dsaf朱荣宁3443n荣宁43朱荣宁
0ewldfls=103″,4);
ss.SplitIt();
}
}
细心的高手会发现,这种实现方式的定义没有什么技术含量,而且时间复杂度很高,
希望路过的高手能给出空间复杂度和时间复杂度都很合适的算法,多谢!等待中....... |
|