蓝桥杯练习题 字符串变换

问题描述

  相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了。今天,徐老师想测试一下大家对于字符串操作的掌握情况。徐老师自己定义了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.util.Scanner;
 2
 3
 4 public class Main {
 5
 6     public static void main(String[] args) {
 7         // TODO Auto-generated method stub
 8         Scanner input = new Scanner(System.in);
 9         int n=input.nextInt();
10         String s =input.next();
11         char[] a=s.toCharArray();
12         switch (n) {
13             case 1:
14                 s=s.toUpperCase();
15                 System.out.println(s);
16                 break;
17             case 2:
18                 s=s.toLowerCase();
19                 System.out.println(s);
20                 break;
21             case 3:
22                 for(int i=0;i<s.length()/2;i++)
23                 {
24                     int j=s.length()-i-1;
25                     char c=a[i];
26                     a[i]=a[j];
27                     a[j]=c;
28                     j--;
29                 }
30                 s=String.valueOf(a);
31                 System.out.println(s);
32                 break;
33             case 4:
34                 for(int i=0;i<s.length();i++)
35                 {
36                     char c= s.charAt(i);
37                     if(Character.isUpperCase(c))
38                     {
39                         a[i]=Character.toLowerCase(c);
40                     }
41                     else
42                         a[i]=Character.toUpperCase(c);
43                 }
44                 s=String.valueOf(a);
45                 System.out.println(s);
46                 break;
47             case 5:
48                 s=s.toLowerCase();
49                 a=s.toCharArray();
50                 int count=0;
51
52                 System.out.print(a[0]);
53                 for(int i=1;i<s.length();i++)
54                 {
55
56                     while(a[i]-a[i-1]==1)
57                     {
58                         count++;
59                         i++;
60                         if(i>=s.length())
61                             break;
62                     }
63                     if(count>1)
64                     {
65                         System.out.print("-"+a[--i]);
66                     }
67                     else
68                     {
69                         if(count>0)
70                             i--;
71                         System.out.print(a[i]);
72                     }
73                     count=0;
74                 }
75                 break;
76             default:
77                 break;
78         }
79
80
81     }
82
83
84
85 }
时间: 2024-09-29 05:01:21

蓝桥杯练习题 字符串变换的相关文章

第五届蓝桥杯练习题 - 入门练习Java解题代码

>>入门训练 圆的面积 时间限制:1.0s   内存限制:256.0MB 锦囊1 锦囊2 锦囊3 问题描述 给定圆的半径r,求圆的面积. 输入格式 输入包含一个整数r,表示圆的半径. 输出格式 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积. 说明:在本题中,输入是一个整数,但是输出是一个实数. 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误. 实数输出的问题

蓝桥杯练习题 和为T(DFS)

问题描述 从一个大小为n的整数集中选取一些元素,使得它们的和等于给定的值T.每个元素限选一次,不能一个都不选. 输入格式 第一行一个正整数n,表示整数集内元素的个数. 第二行n个整数,用空格隔开. 第三行一个整数T,表示要达到的和. 输出格式 输出有若干行,每行输出一组解,即所选取的数字,按照输入中的顺序排列. 若有多组解,优先输出不包含第n个整数的:若都包含或都不包含,优先输出不包含第n-1个整数的,依次类推. 最后一行输出总方案数. 样例输入 5-7 -3 -2 5 90 样例输出 -3 -

蓝桥杯 ALGO-110 字符串的展开(字符串)

[思路]:按照题意来就行.注意当p1=2时,字母串和数字串的区别.推荐使用string,采用replace函数替换就行,char[]移动大量数据. [AC代码]: #include <iostream> #include <algorithm> #include <string> #include <cstdio> #include <cstring> using namespace std; #define MAX 10000+5 int is

蓝桥杯——基础练习之FJ的字符串

问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "ABACABADABACABA" - - 你能找出其中的规律并写所有的数列AN吗? 输入格式 仅有一个数:N ≤ 26. 输出格式 请输出相应的字符串AN,以一个换行符结束.输出中不得含有多余的空格或换行.回车符. 样例输入 3 样例输出 ABACABA public static void main(

2015年蓝桥杯省赛B组C/C++(试题+答案)

首先说,这次我是第二次参加蓝桥杯(大学里最后一次),可这次去连个三等都没拿到,有些心灰意冷,比上一次还差, 当时看到成绩出来的时候有些失落,但是跌倒了,再站起来继续跑就可以了.可能是状态不好吧,纯属自我安慰. 接下来我把今年的题目又重新做了一遍,写下了这篇博客,如果也有需要探讨答案的,希望可以有帮助. 第一题: 第1题:统计不含4的数字 题目大意 统计10000至99999中,不包含4的数值个数. 解题分析: 第一种解法: 数学方法,这种是在网上看到的一种解法: 最高位除了0.4不能使用,其余8

【蓝桥杯】矩阵变换加密法(playfair)

一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母),然后与字母表中其他字母一起填入至一个5x5的方阵中,填入方法如下: 1.首先按行填入密钥串. 2.紧接其后,按字母序按行填入不在密钥串中的字母. 3.由于方阵中只有25个位置,最后剩下的那个字母则不需变换. 如果密钥为youandme,则该方阵如下: y o u a n d m e b c f g h i j k l p q r s t v w x 在加密一对字母时,如am,在方阵中找到

第三届蓝桥杯 c/c++真题

第三届蓝桥杯真题 c/c++ 以下题目我自己也并不是所有的题目都是一次性就能做对或是有结题思路的.有些题目也是经过查证网上相关的资料或是参考了别人的代码和解题思路才做出来的.总的来看,这份题目考了很多循环的只是,还有模拟,动态规划的只是. 其中做题过程中,也有了一些新的体会.起初做代码填空题的时候我没办法知道自己做的是对还是错,就跑到网上查答案,后来发现,题目已经给出了代码,起始我们可以自己加上头文件,然后把空缺的代码加上进行调试的,这样就可以验证自己补充的代码是否正确了. 此外在进行调试的时候

蓝桥杯习题

这个月我都不知道忙什么了,反正蓝桥杯就这样过去了,把自己的整理的习题发上去吧. 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000. 输出格式 输出n行,每行为输入对应的八进制正整数. 注意 输入的十六进制数不会有前导0,比如012A. 输出的八进制数也不能有前导0. 样例输入 2 39 123ABC

【蓝桥杯】密码发生器

在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全:如果设置不好记的密码,又担心自己也会忘记:如果写在纸上,担心纸张被别人发现或弄丢了... 这个程序的任务就是把一串拼音字母转换为6位数字(密码).我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字. 变换的过程如下: 第一步. 把字符串6个一组折叠起来,比如wangximing则变为: wangxi ming 第二步. 把所有垂直在同一个位置