Python |使用OrderedDict()检查字符串中字符的顺序

给定一个输入字符串和一个模式,检查输入字符串中的字符是否遵循由模式中的字符确定的相同顺序。假设模式中没有任何重复字符。

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
喜欢就支持一下吧
点赞11 分享