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
*/