zoukankan      html  css  js  c++  java
  • 蓝桥杯 算法训练 ALGO-143 字符串变换

    算法训练 字符串变换  
    时间限制:1.0s   内存限制:256.0MB
    问题描述
      相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了。今天,徐老师想测试一下大家对于字符串操作的掌握情况。徐老师自己定义了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。
     
    示例代码:
     1 import java.io.BufferedReader;
     2 import java.io.IOException;
     3 import java.io.InputStreamReader;
     4 
     5 public class Main{
     6     public static void main(String[] args) throws IOException {
     7         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     8         String[] str = br.readLine().split(" ");
     9         int n = Integer.parseInt(str[0]);
    10         String s = str[1];
    11         
    12         strChange(n,s);
    13     }
    14     
    15     /**
    16      * 字符串转换
    17      * @param n    操作的数字
    18      * @param s    操作的字符串
    19      */
    20     private static void strChange(int n, String s) {
    21         switch(n){
    22             case 1 :
    23                 System.out.println(s.toUpperCase());
    24                 break;
    25             case 2 :
    26                 System.out.println(s.toLowerCase());
    27                 break;
    28             case 3 :
    29                 for(int i = s.length()-1 ; i >= 0 ; i -- ){
    30                     System.out.print(s.charAt(i));
    31                 }
    32                 break;
    33             case 4 :
    34                 StringBuilder sb = new StringBuilder();
    35                 for(int i = 0 ; i < s.length(); i++){
    36                     char c = s.charAt(i);
    37                     if('a' <= c && c <= 'z'){
    38                         sb.append((char)(c - 'a' + 'A'));
    39                     }else{
    40                         sb.append((char)(c - 'A' + 'a'));
    41                     }
    42                 }
    43                 System.out.println(sb.toString());
    44                 break;
    45             case 5 :
    46                 StringBuilder sb1 = new StringBuilder();
    47                 s = s.toLowerCase();
    48                 for(int i = 0; i < s.length(); i++){
    49                     if( i == s.length()-1){
    50                         sb1.append(s.charAt(i));
    51                         continue;
    52                     }
    53                     
    54                     int j = i+1 ;
    55                     if(s.charAt(i)+1 != s.charAt(j)){   //若第 i 个字符与第 i+1 个字符不连续,则输出第 i 个字符
    56                         sb1.append(s.charAt(i));
    57                         continue;
    58                     }
    59                     
    60                     j++;
    61                     if(j == s.length() || s.charAt(j-1)+1 != s.charAt(j)){  //若第 i+1 个字符与第 i+2 个字符不连续,则输出第 i 个字符
    62                         sb1.append(s.charAt(i));
    63                             continue;
    64                     }
    65                     
    66                     sb1.append(s.charAt(i));    //将第一个字符输出
    67                     sb1.append("-");            //输出连接符号" - "
    68                     while( j < s.length()-1 && s.charAt(j)+1 == s.charAt(j+1)){ //第 i+2 个和第 i+3 个相连续
    69                         j++;
    70                     }
    71                     sb1.append(s.charAt(j));    //输出相连字符串中的最后一个字符
    72                     i = j;                     //循环从相连字符串中的最后一个字符的位置开始循环
    73                 }
    74                 
    75                 System.out.println(sb1.toString());
    76                 break;
    77             default:
    78                 break;
    79         }
    80     }
    81 }
  • 相关阅读:
    在DOS的常用命令
    HTML中USEMAP的用法
    asp.net2.0角色管理,详细步骤
    利用ASP.NET动态生成HTML文件
    PetShop 4.0 详解之五(PetShop之业务逻辑层设计)
    使用成员资格和用户登录创建网站 (Visual Studio)
    Windows 找不到文件'(null)'.请确定文件名是否正确后,再试一下.要搜索文件,请单击[开始]按钮,然后单击"搜索"
    在ashx文件中读写session
    asp.net图片滚动+JAVASCRIPT(向右)
    动态编辑程序配置文件
  • 原文地址:https://www.cnblogs.com/cao-lei/p/6686509.html
Copyright © 2011-2022 走看看