zoukankan      html  css  js  c++  java
  • 算法训练 字符串变换

    /*
    算法训练 字符串变换  
    
    问题描述
      相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了。今天,徐老师想测试一下大家对于字符串操作的掌握情况。徐老师自己定义了1,2,3,4,5这5个参数分别指代不同的5种字符串操作,你需要根据传入的参数,按照徐老师的规定,对输入字符串进行格式转化。
      徐老师指定的操作如下:
      1 表示全部转化为大写字母输出,如abC 变成 ABC
      2 表示全部转换为小写字母输出,如abC变成abc
      3 表示将字符串整个逆序输出,如 abc 变成 cba
      4 表示将字符串中对应的大写字母转换为小写字母,而将其中的小写字母转化为大写字母输出,如 abC变成ABc
      5表示将全部转换为小写字母,并将其中所有的连续子串转换为对应的缩写形式输出,比如abcD 转换为a-d,其次,-至少代表1个字母,既如果是ab,则不需要转换为缩写形式。
    输入格式
      一共一行,分别是指代对应操作的数字和字符串,两者以空格分隔,字符串全部由英文字母组成
    输出格式
      输出根据上述规则转换后对应的字符串
    样例输入
    5 ABcdEE
    样例输出
    a-ee
    数据规模和约定
      输入字符串长度最长为200。
    
    */
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            String s = sc.next();
            sc.close();
            System.out.println(f(n, s));
        }
    
        static String f(int n, String s) {
            String result = "";
            switch (n) {
            case 1:
                result = s.toUpperCase();
                break;
            case 2:
                result = s.toLowerCase();
                break;
            case 3:
                StringBuffer buffs = new StringBuffer(s);
                result = buffs.reverse().toString();
                break;
            case 4:
                StringBuffer buffs1 = new StringBuffer(s);
                for (int i = 0; i < buffs1.length(); i++) {
                    char c = buffs1.charAt(i);
                    if (c < 'z' && c > 'a') {
                        buffs1.setCharAt(i, (char) (c - 32));
                    } else {
                        buffs1.setCharAt(i, (char) (c + 32));
                    }
                }
                result = buffs1.toString();
                break;
            case 5:
                s = s.toLowerCase();
                String s2 = s;
                int len = 0;
                for (int i = 1; i < s.length(); i++) {
                    while (i < s.length() && s.charAt(i) == s.charAt(i - 1) + 1) {
                        len++;
                        i++;
                    }
                    if (len >= 2) {
                        String replacement = s.substring(i - len - 1, i);
                        s2 = s2.replaceFirst(replacement, replace(replacement));
                        len = 0;
                    }
                }
                result = s2.toString();
                break;
            }
            return result;
        }
    
        static String replace(String s) {
            return s.charAt(0) + "-" + s.charAt(s.length() - 1);
        }
    }


    /*算法训练 字符串变换  
    问题描述  相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了。今天,徐老师想测试一下大家对于字符串操作的掌握情况。徐老师自己定义了1,2,3,4,5这5个参数分别指代不同的5种字符串操作,你需要根据传入的参数,按照徐老师的规定,对输入字符串进行格式转化。  徐老师指定的操作如下:  1 表示全部转化为大写字母输出,如abC 变成 ABC  2 表示全部转换为小写字母输出,如abC变成abc  3 表示将字符串整个逆序输出,如 abc 变成 cba  4 表示将字符串中对应的大写字母转换为小写字母,而将其中的小写字母转化为大写字母输出,如 abC变成ABc  5表示将全部转换为小写字母,并将其中所有的连续子串转换为对应的缩写形式输出,比如abcD 转换为a-d,其次,-至少代表1个字母,既如果是ab,则不需要转换为缩写形式。输入格式  一共一行,分别是指代对应操作的数字和字符串,两者以空格分隔,字符串全部由英文字母组成输出格式  输出根据上述规则转换后对应的字符串样例输入5 ABcdEE样例输出a-ee数据规模和约定  输入字符串长度最长为200。
    */import java.util.Scanner;
    public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();String s = sc.next();sc.close();System.out.println(f(n, s));}
    static String f(int n, String s) {String result = "";switch (n) {case 1:result = s.toUpperCase();break;case 2:result = s.toLowerCase();break;case 3:StringBuffer buffs = new StringBuffer(s);result = buffs.reverse().toString();break;case 4:StringBuffer buffs1 = new StringBuffer(s);for (int i = 0; i < buffs1.length(); i++) {char c = buffs1.charAt(i);if (c < 'z' && c > 'a') {buffs1.setCharAt(i, (char) (c - 32));} else {buffs1.setCharAt(i, (char) (c + 32));}}result = buffs1.toString();break;case 5:s = s.toLowerCase();String s2 = s;int len = 0;for (int i = 1; i < s.length(); i++) {while (i < s.length() && s.charAt(i) == s.charAt(i - 1) + 1) {len++;i++;}if (len >= 2) {String replacement = s.substring(i - len - 1, i);s2 = s2.replaceFirst(replacement, replace(replacement));len = 0;}}result = s2.toString();break;}return result;}
    static String replace(String s) {return s.charAt(0) + "-" + s.charAt(s.length() - 1);}}

  • 相关阅读:
    hdu 1017 A Mathematical Curiosity 解题报告
    hdu 2069 Coin Change 解题报告
    hut 1574 组合问题 解题报告
    hdu 2111 Saving HDU 解题报
    hut 1054 Jesse's Code 解题报告
    hdu1131 Count the Trees解题报告
    hdu 2159 FATE 解题报告
    hdu 1879 继续畅通工程 解题报告
    oracle的系统和对象权限
    oracle 自定义函数 返回一个表类型
  • 原文地址:https://www.cnblogs.com/Alpharun/p/8622997.html
Copyright © 2011-2022 走看看