2016年校招编程笔试题汇总 考点:冒泡排序(稳定排序)、不考虑大小写特殊情况、判断字符串是否包含另一个字符串、判断某个字符串中含有某个字符串的个数

题目描述:

时间限制:3秒  空间限制:32768K  热度指数:20474
本题知识点:  查找  字符串
 算法知识视频讲解

题目描述

请设计一个高效算法,再给定的字符串数组中,找到包含"Coder"的字符串(不区分大小写),并将其作为一个新的数组返回。结果字符串的顺序按照"Coder"出现的次数递减排列,若两个串中"Coder"出现的次数相同,则保持他们在原数组中的位置关系。

给定一个字符串数组A和它的大小n,请返回结果数组。保证原数组大小小于等于300,其中每个串的长度小于等于200。同时保证一定存在包含coder的字符串。

测试样例:
["i am a coder","Coder Coder","Code"],3
返回:["Coder Coder","i am a coder"]
public class Coder {
	 private static int counter = 0;  
    public static String[] findCoder(String[] A, int n) {
    	//包含coder字符串(不区分大小写)
    	//结果按照coder递减排列:即计数控制
    	//若两字符串位置相同,则保持原位置关系
    	int count=0;
    	for (int i = 0; i < A.length; i++) {
    		String s=A[i].replace(" ", "");
    		s=s.toLowerCase();
			if(s.indexOf("coder")!=-1){
				count++;
			}
		}
    	//初始化包含coder字符串数组
		 String[] Acotains=new String[count];
		 int ac=0;
		 while(ac < Acotains.length){
		 for (int i1 = 0; i1 < A.length; i1++) {
			 if(A[i1].toLowerCase().indexOf("coder")!=-1){
				 Acotains[ac++]=A[i1];
			 }
			 }
		 }
		 // 冒泡排序方法
	        for (int i = 0; i < Acotains.length - 1; i++) {
	            for (int x = 0; x < Acotains.length - 1-i; x++) {
	            	 int num=countStr(Acotains[x].replace(" ", ""), "coder");
	            	 counter=0;
					 int knum=countStr(Acotains[x+1].replace(" ", ""), "coder");
					 counter=0;
	                if (num < knum) {
	                    // 数值交换
	                    String a = Acotains[x];
	                    Acotains[x] = Acotains[x + 1];
	                    Acotains[x + 1] = a;
	                   
	                }
	            }
	         }
		return Acotains;
    }
   public static void main(String[] args) {
	   String[] A={"coder",
			   "quvnkcoderoscoderspxqcoderboxlscoderxtzhcoderxdnccoderqjwcoderduhcoderfewpwcoderlhwlcoderrkexcoderqmmbcoderfbcoderuscoderocoderdhgvpcoderuoocoderiwircoder",
			   "yngfcodervcoderrazxcoderwwbcoderxxkqvcoderiruzmcoderbxcoderchcoderddutcoderecoderkbmcoderzcoderhcoderfoocoder",
			   "focoderqbnacoderkmnuicoderimdcoderwkcoderqsyhcoderfuzqcoderzsncodersigocoder",
			   "lhkscoder",
			   "uscodersupcoderwuxlhcoderbzcodersskcoderaycoderlpcmcoderzgvcodertcodergcoderiqdcoderthpcoderkahzlcoderfucodericodervcoderywzlzcoderddcoder",
			   "jwywpcoderssmcoderdcpcodertubucoderitmucoder",
			   "oqvcodermrcoderoyecodertkecodergacoderlscoderrmcoderyuvccoderxcoderrnzmmcoderacoderhcoderijcoderjycoderkgycoder",
			   "scwpcoderbuffcoderdacoderfnacoderycodervjcoderkzcoderbcodertavphcoder",
			   "lxtcoderdgnjcoderyljvacodernwvcoderxdcodertmjgcoderjrvtcoderacoscodereqcoderdevjcoderdskhbcodertcoderccoder",
			   "xqoaxcoderwcoderrxcucoderplcodermmsjwcoderyfcoderscodervnacoder",
			   "vqicoderlcoderecoder",
			   "ccoderqeufcoderioozcoderkdtcoderyfojcodertfhicodervcoderqcoderdacoderapghcodervwscfcodernttcoderltbncoderecodermwcgcoderhqhtcoder",
			   "rcoderqyzgcoderyfdfcodermycoderibbfcoderqbescoderftoqocoderufblcodertcoderlbtkcoderutcoderbcoderwecoderdzpcoderrbmpcoderdcoderdcodericoderdlcoder",
			   "mvhncodervccoderczzcoderouajqcoderpcoderldcoderiuhmncoderwzdjcoderzocoderpcodergtfccoderocoderohipqcoderaveqccodertrgcoder",
			   "rqcoderygnpqcoderwwcodertjiikcodertmsghcoderacoderocoderrvyfxcoderyibaqcoderfvscodervocoderrwezocoderwecoderbefcoderqavcoderncoderaemvcoderyguncoder",
			   "pgicodergcoderfocoderefdhcoderdksdacoderwvnccoderuwscoderdzveccoderyvcodertmcoder","qmcoderfaqhcodercfcoderdcodercvrjmcoderixnykcoderzunsmcoderkwzcoderjdwcoderzacodervaglccoder",
			   "ncodersdnpcoderldcoderuzcodervqtdxcodertwcoderscoderecoderynntcodervalcoderdmacoderocoderbpkcoderfpvwtcoderjcoderpobscoder",
			   "shmcoderbimcoderuecoderfgzhxcodermcoderkuhhcodertlqcoderrcoderlrcoderhiehcoderbjxvlcoderycodercczlucoderizgdqcoderhcodersjcoderejwycoderwcodermocoderdcoder",
			   "pscodernvtwgcoder",
			   "kcodereewcoderrcoderzccoderkacodermbqaccoder",
			   "nbcodervzhscodergcoderanlwtcoderaepldcoderycciwcoderrorezcodermdcucoderxscoderryceecoderrlppcoderjncokcoderulccodergwcoderquvcoderhcoderhtcoderphyfcoderdobzcoder",
			   "kcoderxdqtcoder"};
	   int n=4;
	   String[] Acotains=findCoder(A,n);
	   for (int i = 0; i < Acotains.length; i++) {
		System.out.println(Acotains[i]);
	}
}
   /** 
    * 判断str1中包含str2的个数 
     * @param str1 
    * @param str2 
    * @return counter 
    */  
   public static int countStr(String str1, String str2) {  
	   str1=str1.toLowerCase();
	   str2=str2.toLowerCase();
       if (str1.indexOf(str2) == -1) {  
           return 0;  
       } else if (str1.indexOf(str2) != -1) {  
           counter++;  
           countStr(str1.substring(str1.indexOf(str2) +  
                  str2.length()), str2);  
              return counter;  
       }  
           return 0;  
   }   
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值