sdut_java_救基友记2

本文介绍了一个趣味编程挑战——救基友记2,任务是修改特定子串的大小写。通过分析输入输出及示例,给出了正确的Java实现方案,并对比了一个存在缺陷的解答,邀请读者一起探讨解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

救基友记2

Time Limit: 1000MS  Memory Limit: 65536KB
Problem Description
    屌丝 WP 的好基友 CZ 又被妖鬼给抓走了( CZ 啊, CZ…. 怎么说你好呢 . 吃着锅里想着碗里),为了求出 CZ ,他只好去求高富帅 RQ, RQ WP 出了到题目说只要你能解决这道题目,他就答应帮屌丝 WP 去解救好基友 CZ 。题目描述如下:
  给你一个字符串s,长度小于1000,让你找出该字符串所包含的所有子串"cRazY" 或者"CraZy",并将找出的子串的大写字母变成小写字母,小写字母变成大写字母,然后输出该字符串。
  “好基友,一被子” 你作为WP的好基友,能帮他解决这个问题吗?
Input
  1 行是一个整数 T ,表示测试数据的个数( 1<=T<=10 )。接下来有 T 组测试数据。

每组测试数据包括包括一个字符串s

Output
  输出 T 行,表示转换后的字符串 
Example Input
2
abjbjhcRazYdcRazYCraZy
bbbnnnbbn
Example Output
abjbjhCrAZydCrAZycRAzY
bbbnnnbbn
正确答案:
import java.util.Scanner;

public class Main {
	
	public static void main(String args[]) {
		Scanner in = new Scanner(System.in);
		String str;
		int t = in.nextInt();
		while( t-->0 ){
			str = in.next();
			char []c = str.toCharArray(); 
			if( c.length>4 ){
				for( int i=4; i<c.length; i++ ){  
		            if( c[i]=='y' && c[i-1]=='Z' && c[i-2]=='a' && c[i-3]=='r' && c[i-4]=='C' )  {
		                c[i-4] = 'c';
		                c[i-3] = 'R';
		                c[i-2] = 'A';
		                c[i-1] = 'z';
		                c[i] = 'Y';  
		            }
		            if( c[i]=='Y' && c[i-1]=='z' && c[i-2]=='a' && c[i-3]=='R' && c[i-4]=='c' ){
		            	c[i-4] = 'C';
		            	c[i-3] = 'r';
		            	c[i-2] = 'A';
		            	c[i-1] = 'Z';
		            	c[i] = 'y';  
		            }
		        }  
			}
			for( int i=0; i<c.length; i++ )
				System.out.print(c[i]);
			System.out.println();		
		}
	}
}


错误答案(有哪位朋友可以指教一下吗):
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {		
		Scanner in = new Scanner (System.in);
		int n = in.nextInt();
		while( n-->0 ){
			String s;
			s = in.next();
			StringBuffer s1 = new StringBuffer();
			int i, j;
			for( i=0; i<s.length(); i++ ){
				if( s.charAt(i)=='c' && s.charAt(i+1)=='R' && s.charAt(i+2)=='a' && s.charAt(i+3)=='z' && s.charAt(i+4)=='Y' ){
					for( j=i; j<=i+4; j++ ){
						
						if(Character.isUpperCase(s.charAt(j))){  
				        	 s1.append(Character.toLowerCase(s.charAt(j)));                
				         }else if(Character.isLowerCase(s.charAt(j))) 
				             s1.append(Character.toUpperCase(s.charAt(j)));
					}
					i += 4;
				}
				else if( s.charAt(i)=='C' && s.charAt(i+1)=='r' && s.charAt(i+2)=='a' && s.charAt(i+3)=='Z' && s.charAt(i+4)=='y' ){
					for( j=i; j<=i+4; j++ ){
						if( Character.isUpperCase( s.charAt(j) ) ){  
				        	 s1.append(Character.toLowerCase(s.charAt(j)));                
				         }else if(Character.isLowerCase(s.charAt(j))) 
				             s1.append(Character.toUpperCase(s.charAt(j)));
					}
					i += 4;
				}
				else
					s1.append( s.charAt(i));
			}
			System.out.println(s1);
		}
		in.close();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值