1

给定两个字符串,如果其中一个字符串出现在另一个字符串的末尾,则返回 True,忽略大小写差异(换句话说,计算不应“区分大小写”)。

示例/测试:

>>> end_other('Hiabc', 'abc') 
True 
>>> end_other('AbC', 'HiaBc') 
True 
>>> end_other('abc', 'abXabc') 
True

我的代码:

def end_other(s1, s2):
    
    s1 = s1.upper()
    s2 = s2.upper()
    
    if s1[2:6] == s2:
        return True
    elif s2[2:6] == s1:
        return True
    elif s2 == s1:
        return True    
    else:
        return False

我的期望是错误的。

(注意:这是来自CodingBat的代码实践

4

2 回答 2

7

有什么理由不能使用内置函数?

def end_other(s1, s2):
    s1 = s1.upper()
    s2 = s2.upper()
    return s1.endswith(s2) or s2.endswith(s1)

您的带有任意切片的代码没有多大意义。

于 2012-11-17T19:15:14.570 回答
0

像这样,使用str.rfind()

In [114]: def end(s1,s2):
    s1=s1.lower()
    s2=s2.lower()
    if s1 in s2 and s2.rfind(s1)+len(s1) == len(s2):
        return True
    elif  s2 in s1 and s1.rfind(s2)+len(s2) == len(s1):
        return True 
    return False
   .....: 

In [115]: end('Hiabc','abc')
Out[115]: True

In [116]: end('abC','HiaBc')
Out[116]: True

In [117]: end('abc','abxabc')
Out[117]: True

In [118]: end('abc','bc')
Out[118]: True

In [119]: end('ab','ab12')
Out[119]: False
于 2012-11-17T19:21:06.607 回答