• 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;
    		}
    	}
    
    
    }
    
    
  • 相关阅读:
    UVa 727
    UVa 11495
    UVa 299
    UVa 10194
    UVa 146
    10025
    Tug of War POJ 2576 DP(类似背包)
    Problem A: Freckles UVA 10034 裸生成树
    UVA 562
    CF DIV 2 206 C. Vasya and Robot
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13079287.html
Copyright © 2020-2023  润新知