阿里中间件秋招笔试

7.6

题目说明

有一个字符串它的构成是词+空格的组合,如“北京 杭州 杭州 北京”, 要求输入一个匹配模式(简单的以字符来写), 比如 aabb, 来判断该字符串是否符合该模式, 举个例子:

  1. pattern = "abba", str="北京 杭州 杭州 北京" 返回 ture
  2. pattern = "aabb", str="北京 杭州 杭州 北京" 返回 false
  3. pattern = "baab", str="北京 杭州 杭州 北京" 返回 ture
public class Solution {
	public boolean wordPattern(String pattern, String str) {

	}
}
package per.wmx.demo;



/*
阿里巴巴笔试

* 有一个字符串它的构成是词+空格的组合,如“北京 杭州 杭州 北京”, 要求输入一个匹配模式(简单的以字符来写),
* 比如 aabb, 来判断该字符串是否符合该模式, 举个例子:

pattern = "abba", str="北京 杭州 杭州 北京" 返回 ture
pattern = "aabb", str="北京 杭州 杭州 北京" 返回 false
pattern = "baab", str="北京 杭州 杭州 北京" 返回 ture
*
* */
public class Solution {
    public static boolean wordPattern(String pattern, String str) {
        boolean flag= true;
        String [] strs=str.split(" ");    //用空格split
        char [] chars = pattern.toCharArray();

        if(chars.length!=strs.length){
            flag=false;
        }

        char []tempPattern =new char[strs.length];    //存放临时的匹配模式     与输入的匹配模式,比对

        int record=1;
        for (int i=0;i<strs.length;i++){
            if(i==0){
                tempPattern[0]='a';
            }
            else{
                String m=strs[i];

                int f=0;
                for(int j=0;j<i;j++){
                    if(m.equals(strs[j])){
                        tempPattern[i]=tempPattern[j];
                        f=1;
                        break;
                    }
                }
                if(f==0) {
                    tempPattern[i] = (char) (tempPattern[0] + record);       //有a了,变b,有b了,变c
                    record++;
                }
            }


        }

        for(int i=0;i<tempPattern.length;i++){
            System.out.println(tempPattern[i]);
        }

        for(int i=0;i<tempPattern.length;i++){
            if(tempPattern[i]!=chars[i]){
                flag=false;
            }
        }

        return flag;
    }


    public static void main(String []args){
        boolean flag=wordPattern("abbb","杭州 北京 北京 北京");
        if(flag){
            System.out.println("模式匹配");
        }else{
            System.out.println("模式不匹配");
        }
    }
}

 

好像有点复杂,复杂度有点高,但是测试的都可以。

 

算法一直是我的弱项,希望慢慢提升

等期末考完试每天写道算法

 

阅读更多
换一批

没有更多推荐了,返回首页