题解 | #万万没想到之聪明的编辑#

万万没想到之聪明的编辑

http://www.nowcoder.com/questionTerminal/42852fd7045c442192fa89404ab42e92

分组循环,把连续相同的字符分到一组。

数量>=2的,如果前面是==2的,就减到1,否则就减到2个。

用boolean f 来标记上一个字符的连续数量。

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        while (t-- != 0) {
            String s = in.next();
            StringBuilder res = new StringBuilder();
            boolean f = false;
            for (int i = 0; i < s.length(); ++i) {
                int j = i + 1;
                while (j < s.length() && s.charAt(i) == s.charAt(j)) j++;
                if (j == i + 1) {
                    res.append(s.charAt(i));
                    f = false;
                } else {
                    if (f) {
                        // 减到1个
                        res.append(s.charAt(i));
                        f = false;
                    } else {
                        // 减到两个
                        res.append(s.substring(i, i + 2));
                        f = true;
                    }
                }
                i = j - 1;
            }
            System.out.println(res.toString());
        }
    }
}
全部评论

相关推荐

11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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