问题描述
相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了。今天,徐老师想测试一下大家对于字符串操作的掌握情况。徐老师自己定义了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