讨论/题目交流/🏆 第 183 场力扣周赛/
🏆 第 183 场力扣周赛

欢迎小伙伴们在这里交流分享你的参赛心得以及体验。【前往竞赛

image.png

4 分 - 非递增顺序的最小子序列
4 分 - 将二进制表示减到 1 的步骤数
6 分 - 最长快乐字符串
7 分 - 石子游戏 III

第一次参加比赛,好紧张啊~
第二题,一开始想转成int做,结果浪费了20min
第三题,超时,不过幸苦写的代码还是放出来吧

    public static String longestDiverseString(int a, int b, int c) {
    	char q2,q1;		
    	return longestDiverseString("","",a,b,c);       
    }
    public static String longestDiverseString(String res,String tmp,int a, int b, int c) {
    	char q2='d',q1='e';
    	if(!(tmp.length()<2)){
    		q1=tmp.charAt(tmp.length()-1);
    		q2=tmp.charAt(tmp.length()-2);
    	}
    	if(a==0&&b==0&&c==0){
    		return tmp;
    	}
    	
    	if(q2!=q1){
    		if(a>0){
    			res=longestDiverseString(res,tmp+'a',a-1,b,c);
    		}
    		if(b>0){
    			res=longestDiverseString(res,tmp+'b',a,b-1,c);
    		}
    		if(c>0){
    			res=longestDiverseString(res,tmp+'c',a,b,c-1);
    		}
    	}else{
    		if(q2=='a'){   			
    			if(b>0){
        			res=longestDiverseString(res,tmp+'b',a,b-1,c);
        		}
        		if(c>0){
        			res=longestDiverseString(res,tmp+'c',a,b,c-1);
        		}
        		if(b==0&&c==0){
        			if(res.length()<tmp.length())
        				res=tmp;
        		}
    		}else if(q2=='b'){
    			if(c>0){
        			res=longestDiverseString(res,tmp+'c',a,b,c-1);
        		}
    			if(a>0){
        			res=longestDiverseString(res,tmp+'a',a-1,b,c);
        		}
    			if(a==0&&c==0){
        			if(res.length()<tmp.length())
        				res=tmp;
        		}
    		}else if(q2=='c'){
    			if(a>0){
        			res=longestDiverseString(res,tmp+'a',a-1,b,c);
        		}
        		if(b>0){
        			res=longestDiverseString(res,tmp+'b',a,b-1,c);
        		}
        		if(b==0&&a==0){
        			if(res.length()<tmp.length())
        				res=tmp;
        		}
    		}   		
    	}
		return res;   	
    }
展开全部 22 讨论