MarcusV(南墙大佬的搬运工)

南墙大佬的CSDN博客地址

导航

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 字符串变换 {//65    97
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String s = sc.next();
		sc.close();
		if(n==1){
			System.out.println(s.toUpperCase());
		}
		else if(n==2){
			System.out.println(s.toLowerCase());
		}
		else if(n==3){
			StringBuilder sb = new StringBuilder(s);
			sb.reverse();
			System.out.println(sb);
		}
		else if(n==4){
			char [] num = s.toCharArray();
			for (int i = 0; i < num.length; i++) {
				if(num[i]>=97){
					System.out.print((char)(num[i]-32));
				}
				else{
					System.out.print((char)(num[i]+32));
				}
				
			}
		}
		else{
			s=s.toLowerCase();
			int temp=1;
			char [] num = s.toCharArray();
			for (int i = 0; i < num.length-1; i++) {
				if(num[i]==num[i+1]-1){
					if(temp==1) System.out.print(num[i]);
					temp++;
				}
				else{
					if(temp<=2)
					System.out.print(num[i]);
					else
						System.out.print("-"+num[i]);
					temp=1;
				}
			}
			if(temp<=2)
			System.out.print(num[num.length-1]);
			else
				System.out.println("-"+num[num.length-1]);
		}
		
		
		
	}

}

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		String str=sc.next();
		switch (n) {
		case 1:{
			System.out.println(str.toUpperCase());
			break;
		}
			
		case 2:{
			System.out.println(str.toLowerCase());
			break;
		}
		case 3:{
			char[] c=str.toCharArray();
			for(int i=c.length-1;i>=0;i--) {
				System.out.print(c[i]);
			}
			break;
		}
		case 4:{
			StringBuilder strb=new StringBuilder();
			for(int i=0;i<str.length();i++) {
				if(str.charAt(i)>=97&&str.charAt(i)<=122) {
					strb.append((char)(str.charAt(i)-32));
				}else {
					strb.append((char)(str.charAt(i)+32));
				}
			}
			System.out.println(strb);
			break;
		}
		case 5:{
			
			str=str.toLowerCase();
			char [] shu = str.toCharArray();
			String st = "";
			int a = 0,b=0;
			if(shu.length>2){
				
			
			for (int i = 0; i < shu.length-1; i++) {
				if(shu[i+1]-shu[i]==1) {
					if(i+1==shu.length-1) {
						if(i-b<2) {
							
						}
						if(a==1) {
							
						st+="-";
						}
						if(shu[i]-shu[i-1]!=1) {
							
							st+=shu[i];
						}
						st+=shu[i+1];
						continue;
					}
					if(a==0) {
						st+=shu[i];
						b = i;
					}
					a=1;
					continue;
				}
				else {
					if(i-b<2) {
						st+=shu[i];
						a=0;
						continue;
					}
					a=0;
					st+="-";
					st+=shu[i];
				}}
			System.out.println(st);
			}
			else {
				System.out.println(str);
			}
			
			
		
//			int sum=0,flag=0;
//			str=str.toLowerCase();
//			StringBuilder strb=new StringBuilder();
//			strb.append(str.charAt(0));
//			if(str.length()>=2) {
//				for(int i=1;i<str.length()-1;i++) {
//					if(str.charAt(i+1)-str.charAt(i)==1) {
//						if(sum==0) {
//							strb.append(str.charAt(i));
//							flag=0;
//						}
//						sum++;
//					}else {
//						if(sum>1) {
//							strb.append("-"+str.charAt(i));
////							strb.append(str.charAt(i+1));
////							i++;
//						}else {
//							strb.append(str.charAt(i));
//						}
//						flag=1;
//						sum=0;
//					}
//				}
//				if(flag==0&&sum>1) {
//					strb.append("-");
//				}
//				strb.append(str.charAt(str.length()-1));
//			}
//			System.out.println(strb);
//			break;
		}
		default:
			break;
		}
	}


}

posted on 2019-03-16 15:34  MarcusV  阅读(46)  评论(0编辑  收藏  举报