蓝桥杯算法训练 字符串变换 java
来源:互联网 发布:淘宝客推广计划怎么写 编辑:程序博客网 时间:2024/05/22 12:01
题目:
算法训练 字符串变换
时间限制: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,则不需要转换为缩写形式。
徐老师指定的操作如下:
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 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int num = sc.nextInt();String str = sc.next();StringBuilder strb = new StringBuilder(str);if(num == 1){System.out.println(str.toUpperCase());} else if(num == 2){System.out.println(str.toLowerCase());} else if(num == 3){StringBuffer sb = new StringBuffer(str);System.out.println(sb.reverse());} else if(num == 4){for(int i = 0;i < str.length();i++){if(Character.isLowerCase(str.charAt(i))){strb.setCharAt(i, Character.toUpperCase(str.charAt(i)));} else {strb.setCharAt(i, Character.toLowerCase(str.charAt(i)));}}System.out.println(strb);} else if(num == 5){str = str.toLowerCase();StringBuilder sb = new StringBuilder();for(int i = 0;i < str.length();i++){if(i == 0)sb = sb.append(str.charAt(0));else if(i != str.length() - 1){if((int)str.charAt(i) != (int)str.charAt(i - 1) + 1 || (int)str.charAt(i) != (int)str.charAt(i + 1) - 1){sb = sb.append(str.charAt(i));}else if(sb.charAt(sb.length() - 1) != '-'){sb = sb.append("-");}}else{sb = sb.append(str.charAt(i));}}System.out.println(sb);}}}主要就是num==5的时候麻烦一点,先构造一个sb(StringBuilder)遍历字符串,
如果i==0,直接加上
如果i在0与结尾之间,如果与前后不连续直接加上,否则看一下sb的最后一位是不是'-',是就不用管了,接着循环,不是就加上'-'
如果循环到结尾,直接加上结尾就行了
阅读全文
0 0
- 蓝桥杯算法训练 字符串变换 java
- 算法训练 字符串变换
- 算法训练 字符串变换
- 算法训练 字符串变换
- 算法训练 字符串变换
- 蓝桥杯 ALGO-143 算法训练 字符串变换
- 蓝桥杯——算法训练 字符串变换(Vip试题)
- 蓝桥杯 算法训练 字符串的展开
- 蓝桥杯 ALGO-69 算法训练 字符串逆序
- 蓝桥杯 ALGO-70 算法训练 最长字符串
- 蓝桥杯 ALGO-74 算法训练 连接字符串
- 蓝桥杯 ALGO-70 算法训练 最长字符串
- 蓝桥杯 ALGO-69 算法训练 字符串逆序
- 蓝桥杯 算法训练 字符串的展开
- java蓝桥杯算法训练 P1103
- 蓝桥杯 算法训练 排序 JAVA
- 算法训练 最长字符串
- 算法训练 字符串逆序
- PhantomJS快速入门
- 带你重拾概率论
- 两种单例模式
- leetcode 435. Non-overlapping Intervals 消除覆盖区间
- poj2752
- 蓝桥杯算法训练 字符串变换 java
- OkHttp二次封装类
- HDU
- WebService生成客户端代码
- 1、MyBatis入门
- No bean named systemService is defined(Springmvc)报错一种解决思路
- 浅谈task_struct结构
- Java程序异常 open cussors查询 ORA-01000: maximum open cursors exceeded ORA-06512: at "××××××", line ×× 通
- 10 Spring框架 AOP (三) Spring对AspectJ的整合