• leetcode(一)Word Pattern


    题目描述:

    Given a pattern and a string str, find if str follows the same pattern.

    Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

    Examples:

    1. pattern = "abba", str = "dog cat cat dog" should return true.
    2. pattern = "abba", str = "dog cat cat fish" should return false.
    3. pattern = "aaaa", str = "dog cat cat dog" should return false.
    4. pattern = "abba", str = "dog dog dog dog" should return false.

    本人思路:把字符串转化为字符串数组后,先比较长度;再用pattern里的字符替换掉字符串。全部替换后再重新转化为字符串,并与pattern字符串相比较,得出结论。

    代码如下(方法略笨拙,可跳过看第二种,哈哈哈):

            public bool WordPattern(string pattern, string str) {
                //char[] patternAttr=new char[pattern.Length]
                char[] patternAttr=pattern.ToCharArray();
                string[] strAttr=str.Split(' ');
                if(patternAttr.Length!=strAttr.Length)
                {
                    return false;
                }
                else
                {
                    for(int i=0;i<strAttr.Length;i++)
                    {
                        if (patternAttr[i] != ' ')
                        {
                             for(int j=i+1;j<strAttr.Length;j++)
                            {
                       
                                if(strAttr[j]==strAttr[i])
                                {
                                    strAttr[j]=patternAttr[i].ToString()+"!";
                                    patternAttr[j] = ' ';
                                }
                            }
                             for (int k = i + 1; k < strAttr.Length;k++ )
                             {
                                 if(patternAttr[k]==patternAttr[i])
                                 {
                                     patternAttr[i] = ' ';
                                 }
                             }
                             strAttr[i] = patternAttr[i].ToString()+"!";
                             patternAttr[i] = ' ';
                       }
                    }
                    str=String.Join("",strAttr);
                    str=str.Replace("!","");
                    if(str==pattern)return true;
                    else return false;
              }
           }

     第二种解题方法:用字典

    public class Solution {
            public bool WordPattern(string pattern, string str) {
                string[] values = str.Split(' ');
                if(pattern.Length!=values.Length)
                {
                    return false;
                }
                Dictionary<Char,String> dic=new Dictionary<Char,String>();
                for(int i=0;i<pattern.Length;i++)
                {
                    if(!dic.ContainsKey(pattern[i]))
                    {
                        if (!dic.ContainsValue(values[i]))
                        {
                            dic.Add(pattern[i], values[i]);
                        }
                        else return false;
                    }
                    else
                    {
                        if(!dic[pattern[i]].Equals(values[i]))
                        {
                            return false;
                        }
                    }
                }
                return true;
           }
    }
  • 相关阅读:
    python爬虫------处理cookie的相关请求
    开课第七周周总结
    python文件的读写
    分治算法二:二分查找
    读我自己
    分治算法二:归并排序
    分治算法一:汉诺塔
    渐增型算法三:划分序列
    渐增型算法二:合并两个有序序列
    渐增型算法一:插入排序
  • 原文地址:https://www.cnblogs.com/dayang12525/p/6185368.html
Copyright © 2020-2023  润新知