当前位置: 代码迷 >> J2SE >> java有关汉字字节判断的有关问题(面试题)
  详细解决方案

java有关汉字字节判断的有关问题(面试题)

热度:130   发布时间:2016-04-23 20:22:49.0
java有关汉字字节判断的问题(面试题)
假设现在有一个字符串"我叫ABC哈哈";
要求得到 前n个字节的字符串。n是自定义的数字。

比如:

输入1,得到的是 "我"
输入2,得到的是 "我"
输入3,得到的是 "我叫"
输入4,得到的是 "我叫"
输入5,得到的是 "我叫A"
输入6,得到的是 "我叫AB"
。。。。


应该表达清楚了,  这里只是举个例子,,


给定的字符串是  人为输入的,不是一定的
------解决方案--------------------
这是自己出的吧。
条件不足。
------解决方案--------------------
正常的是,你为什么会是上面的结果怎么区分?

我叫
我叫A
我叫AB
我叫ABC
我叫ABC哈

------解决方案--------------------
java里统一了汉字、英文占的字节数了吧。
n是字符结果如楼上所写,n是字节,n=1,也不可能输出“我”
------解决方案--------------------
public static String getBytes(int count,String str){

byte[] bytes = str.getBytes();

String str1 = new String(bytes,0,count);
while(!str.contains(str1)){
str1 = new String(bytes,0,++count);
}
return str1;
}

------解决方案--------------------
你把面试题下下来看看?
------解决方案--------------------
引用:

厉害。
------解决方案--------------------
4F的是我第一反应,但不是最优解
------解决方案--------------------

public class java {

   public static String getBytes(int count,String str){
         
        byte[] bytes = str.getBytes();
         
        String str1 = new String(bytes,0,count);
        while(!str.contains(str1)){
            str1 = new String(bytes,0,++count);
        }
        return str1;
    }

   public static String getBytes2(int count,String str){
         
        byte[] bytes = str.getBytes();

int i = 0;
        while(i<count){
            if(bytes[i] >= 0){
i++ ;
    }else{
i += 2;
    }
        }
        return new String(bytes,0,i);
    }

    public static void main(String[] args){
String s = "我叫ABC哈哈哈";
for(int i = 1 ;i<9;i++){
    System.out.println(getBytes(i,s ));
}

for(int i = 1 ;i<9;i++){
    System.out.println(getBytes2(i,s ));
}
         
    }
}

------解决方案--------------------
引用:

public class java {

   public static String getBytes(int count,String str){
         
        byte[] bytes = str.getBytes();
         
        String str1 = new String(bytes,0,count);
        while(!str.contains(str1)){
            str1 = new String(bytes,0,++count);
        }
        return str1;
    }

   public static String getBytes2(int count,String str){
         
        byte[] bytes = str.getBytes();

int i = 0;
        while(i<count){
            if(bytes[i] >= 0){
i++ ;
    }else{
i += 2;
    }
        }
        return new String(bytes,0,i);
    }

    public static void main(String[] args){
String s = "我叫ABC哈哈哈";
for(int i = 1 ;i<9;i++){
    System.out.println(getBytes(i,s ));
}

for(int i = 1 ;i<9;i++){
    System.out.println(getBytes2(i,s ));
}
         
    }
  相关解决方案