2020年阿里社招的筆試題目2--社招居然也讓我筆試醉了

 2020年阿里的筆試題目。

 

/**
 * 二、有一個字符串它的構成是詞+空格的組合,如“北京 杭州 杭州 北京”, 要求輸入一個匹配模式(簡單的以字符來寫), 比如 aabb, 來判斷該字符串是否符合該模式, 舉個例子:
 *         1.  pattern = "abba", str="北京 杭州 杭州 北京" 返回 ture
 *         2.  pattern = "aabb", str="北京 杭州 杭州 北京" 返回 false
 *         3.  pattern = "abc", str="北京 杭州 杭州 南京" 返回 false
 *         4.  pattern = "acac", str="北京 杭州 北京 廣州" 返回 false
 */

 


import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Set;

/**
 * 功能說明:當天阿里筆試題目 
 * TODO
 *
 * @date 2020年2月10日
 * 
 */
public class TestMain {

	    // “北京 杭州 杭州 北京”, 要求輸入一個匹配模式(簡單的以字符來寫), 比如 aabb, 來判斷該字符串是否符合該模式, 舉個例子:
	    // * 1. pattern = "abba", str="北京 杭州 杭州 北京" 返回 ture
	    // * 2. pattern = "aabb", str="北京 杭州 杭州 北京" 返回 false
	    // * 3. pattern = "abc", str="北京 杭州 杭州 南京" 返回 false
	    // * 4. pattern = "acac", str="北京 杭州 北京 廣州" 返回 false
	    //
	    public static boolean wordPattern(String pattern, String str) {
	    	int  num = 97;
	        String[] arrayStr = str.split(" ");
	        Set<String> hashSet = new LinkedHashSet<String>(10);
	        for (int i = 0; i <arrayStr.length; i++) {
	            hashSet.add(arrayStr[i]);
	        }
	        HashMap<String, String> hashMap = new HashMap<String, String>(10);
	        for (String hashStr : hashSet) {
	            Character ch = new Character((char) num);
	            hashMap.put(hashStr, String.valueOf(ch));
	            num++;
	        }
	        StringBuffer patternResult = new StringBuffer();
	        for (int i = 0; i < arrayStr.length; i++) {
	            String result = hashMap.get(arrayStr[i]);
	            patternResult.append(result);
	        }
	        System.out.println("解析結果爲patternResult="+patternResult.toString());
	        if (patternResult.toString().equals(pattern)) {
	            return true;
	        }
	        return false;
	    }

	    public static void main(String[] args) {
//	        abba", str="北京 杭州 杭州 北京" 返回 ture
	        String pattern = "abba";
	        String str = "北京 杭州 杭州 北京";
	        Boolean flag = wordPattern(pattern, str);
	        System.out.println("【北京 杭州 杭州 北京】與abba 獲取對比的結果:" + flag);
		    // * 2. pattern = "aabb", str="北京 杭州 杭州 北京" 返回 false
		   
	        String pattern2 = "aabb";
	        String str2 = "北京 杭州 杭州 北京";
	        Boolean flag2 = wordPattern(pattern2, str2);
	        System.out.println("【北京 杭州 杭州 北京】與aabb 獲取對比的結果:" + flag2);
	        // * 3. pattern = "abc", str="北京 杭州 杭州 南京" 返回 false
	        String pattern3 = "abc";
	        String str3 = "北京 杭州 杭州 南京";
	        Boolean flag3 = wordPattern(pattern3, str3);
	        System.out.println("【北京 杭州 杭州 南京】與abc 獲取對比的結果:" + flag3);
	        // * 4. pattern = "acac", str="北京 杭州 北京 廣州" 返回 false
	        String pattern4 = "acac";
	        String str4 = "北京 杭州 北京 廣州";
	        Boolean flag4 = wordPattern(pattern4, str4);
	        System.out.println("【北京 杭州 北京 廣州】與acac 獲取對比的結果:" + flag4);
	        
	     
	       
	    }
	}
	// 1/ hashSet,確定字符串String有幾個參數,設定產生幾個字母,對應字母
	// 2/ HashSet,--》HashMap然後通過給出的字母來獲取字符串,匹配上則返回true
	
	/****
	 * 運行結果  :



解析結果爲patternResult=abba
【北京 杭州 杭州 北京】與abba 獲取對比的結果:true
解析結果爲patternResult=abba
【北京 杭州 杭州 北京】與aabb 獲取對比的結果:false
解析結果爲patternResult=abbc
【北京 杭州 杭州 南京】與abc 獲取對比的結果:false
解析結果爲patternResult=abac
【北京 杭州 北京 廣州】與acac 獲取對比的結果:false
	 */
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章