2013亚马逊校招机试题A

简介:

题目没复制下来,凭印象写的。

删除代码中的的注释。注释分两种,//和/**/。字符串中出现的注释符号不能被当作注释。

解题思路:

以前编译原理课做过类似的程序,分出几个状态,并做状态转移判断即可。

StringBuilder中存放返回的字符串。动作a表示添加当前字符到StringBuilder,b表示删除StringBuilder中最后一个字符。-表示其他字符或者无动作或者状态不转变

状态 字符 转变状态 动作
0 " 1 a
0 / 2 a
0 - - a
1 " 0 a
1 - - a
2 * 3 b
2 / 4 b
2 - 0 a
3 * 5 -
3 - - -
4 \n 0 a
4 - - -
5 / 0 -
5 * - -
5 - 3 -

static void backOne(StringBuilder sb) {  
    sb.delete(sb.length() - 1, sb.length());  
}  

static String removeComment(String s) {  
    StringBuilder sb = new StringBuilder();  
    int state = 0;  
    for (int i = 0; i < s.length(); i++) {  
        char c = s.charAt(i);  
        switch (state) {  
        case 0:  
            switch (c) {  
            case '"':  
                sb.append(c);  
                state = 1;  
                break;  
            case '/':  
                sb.append(c);  
                state = 2;  
                break;  
            default:  
                sb.append(c);  
            }  
            break;  
        case 1:  
            switch (c) {  
            case '"':  
                sb.append(c);  
                state = 0;  
                break;  
            default:  
                sb.append(c);  
            }  
            break;  
        case 2:  
            switch (c) {  
            case '*':  
                backOne(sb);  
                state = 3;  
                break;  
            case '/':  
                backOne(sb);  
                state = 4;  
                break;  
            default:  
                sb.append(c);  
                state = 0;  
            }  
            break;  
        case 3:  
            switch (c) {  
            case '*':  
                state = 5;  
                break;  
            }  
            break;  
        case 4:  
            switch (c) {  
            case '\n':  
                sb.append(c);  
                state = 0;  
                break;  
            }  
            break;  
        case 5:  
            switch (c) {  
            case '/':  
                state = 0;  
                break;  
            case '*':  
                break;  
            default:  
                state = 3;  
            }  
        }  
    }  
    return sb.toString();  
} 

目录
相关文章
|
4月前
|
网络协议 网络性能优化 调度
|
设计模式
监考老师很好,下半年继续
监考老师很好,下半年继续
52 0
|
网络协议 算法 安全
腾讯公司2008年面试试题分析与详解
腾讯公司2008年面试试题分析与详解
104 0
2015-第六届蓝桥杯大赛个人赛(软件类)真题C 大学B组
2015-第六届蓝桥杯大赛个人赛(软件类)真题C 大学B组
|
网络协议
校招阿里星,魔兽世界天梯2400分——泠茗不一样的技术人生
校招阿里星,魔兽世界天梯2400分——泠茗不一样的技术人生
校招阿里星,魔兽世界天梯2400分——泠茗不一样的技术人生
|
人工智能 算法 前端开发
大学四年,因为这些网站,他顺利拿下字节跳动的offer!
大学四年,因为这些网站,他顺利拿下字节跳动的offer!
185 0
|
云安全 人工智能 安全
阿里云安全拿下大满贯
阿里云安全入选三大国际权威机构报告,成为国内唯一获得安全领域“大满贯“的云厂商
946 0
阿里云安全拿下大满贯
技术同学看过来,免费送你“第二套房”,还送“精装修”!
将您的原创技术博文同步(复制)到云栖社区 ,给你的博客再安一个家;只要您的技术博客3个月内有更新,申请同步后,即可获得相应奖励:1.     原创博文>=100篇,价值约300元的纪念奖励;2.     原创博文>=60篇<100篇,价值约200元的纪念奖励;3.     原创博文>=30篇<60.
8134 0
|
双11 数据中心
阿里工程师太凶残了,竟把服务器泡在“水里”!
万众瞩目的第11个双11要来了!这次天猫说要帮大家省500亿,身边加购物车、组队盖楼的同学数不胜数,热闹非凡。但在阿里,有一位低调的“高冷男”,丝毫不为红红火火的双11所动,依然稳如磐石、淡定自若。
6031 0
下一篇
无影云桌面