给定一个输入字符串和一个模式,检查输入字符串中的字符是否遵循由模式中的字符确定的相同顺序。假设模式中没有任何重复字符。
null
例如:
Input: string = "engineers rock" pattern = "er"; Output: true Explanation: All 'e' in the input string are before all 'r'. Input: string = "engineers rock" pattern = "egr"; Output: false Explanation: There are two 'e' after 'g' in the input string. Input: string = "engineers rock" pattern = "gsr"; Output: false Explanation: There are one 'r' before 's' in the input string.
我们有解决这个问题的现有解决方案,请参考 检查字符串是否遵循模式定义的字符顺序|集1 在这里,我们使用python快速解决这个问题 OrderedDict() .方法非常简单,
- 创建一个输入字符串的OrderedDict,其中包含以下输入字符串的字符: 钥匙 只有
- 现在在模式字符串的开头设置一个指针。
- 现在遍历生成的OrderedDict并将键和模式字符串的单个字符匹配,如果键和字符彼此匹配,则将指针增加1。
- 若模式指针到达其末端,则表示字符串遵循模式定义的字符顺序,否则不会。
# Function to check if string follows order of # characters defined by a pattern from collections import OrderedDict def checkOrder( input , pattern): # create empty OrderedDict # output will be like {'a': None,'b': None, 'c': None} dict = OrderedDict.fromkeys( input ) # traverse generated OrderedDict parallel with # pattern string to check if order of characters # are same or not ptrlen = 0 for key,value in dict .items(): if (key = = pattern[ptrlen]): ptrlen = ptrlen + 1 # check if we have traverse complete # pattern string if (ptrlen = = ( len (pattern))): return 'true' # if we come out from for loop that means # order was mismatched return 'false' # Driver program if __name__ = = "__main__" : input = 'engineers rock' pattern = 'egr' print (checkOrder( input ,pattern)) |
输出:
true
本文由 沙申克·米什拉(古卢) .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END