看代码

UTF-8 编码验证

http://www.nowcoder.com/questionTerminal/a41ac365553e4646aa84fd9b7dad92f9

UTF-8 编码验证
UTF-8 编码验证playground


import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while (sc.hasNext()) {

            String[] str = sc.next().split(",");
            short[] arr = new short[str.length];
            for (int i = 0; i < str.length; i++) {
                short n = Short.valueOf(str[i]);
                arr[i] = (short)(n & 0xFF);
            }

            boolean illegal = true;
            for (int i = 0; i < arr.length; i++) {
                short b = arr[i];
                if (b >= 0 && b < 128) {
                    continue;
                } else if (b >= 192 && b < 224) {
                    if (i + 1 >= arr.length) {
                        illegal = false;
                        break;
                    }

                    illegal = arr[i + 1] >= 128 && arr[i + 1] < 192;
                    if (!illegal)
                        break;

                    i += 1;
                } else if (b >= 224 && b < 240) {
                    if (i + 2 >= arr.length) {
                        illegal = false;
                        break;
                    }

                    illegal = arr[i + 1] >= 128 && arr[i + 1] < 192 && arr[i + 2] >= 128 && arr[i + 2] < 192;
                    if (!illegal)
                        break;

                    i += 2;
                } else if (b >= 240 && b < 248) {
                    if (i + 3 >= arr.length) {
                        illegal = false;
                        break;
                    }

                    illegal = arr[i + 1] >= 128 && arr[i + 1] < 192 && arr[i + 2] >= 128 && arr[i + 2] < 192 &&
                            arr[i + 3] >= 128 && arr[i + 3] < 192;

                    if (!illegal)
                        break;

                    i += 3;
                } else {
                    illegal = false;
                    break;
                }
            }

            System.out.println(illegal);
        }
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务