如何在python中删除字符串中的中间字符

时间:2016-05-02 01:02:05

标签: python

我真的不知道怎么弄清楚!!!

 remove_middle_character("apple")
'aple'
 remove_middle_character("banana")
'bana'
 remove_middle_character("discount")
‘disunt‘
”“”

2 个答案:

答案 0 :(得分:5)

因为它可能是课堂作业,所以我不打算给你代码(因为你的教育机构可能知道Stack Overflow并且会用抄袭来引诱你,所以你无论如何都会使用它。)相反,我会就你需要知道的事情提供指导。

如果字符串或大小为2或更小(我们提前处理,以便我们不必担心以下步骤中的边缘情况),只需返回一个空字符串。

否则,如果字符串的长度为奇数,则获取长度x,并返回第一个x // 2//运算符为整数除法)字符与字符起始连接在x // 2 + 1

否则,返回与x // 2 - 1开头的字符连接的第一个x // 2 + 1个字符。

将其转化为代码:

  • 您可以使用x;
  • 获取字符串len(x)的长度
  • 您可以使用n;
  • 获取前x[:n]个字符
  • 您可以使用m;
  • 获取从x[m:]开始的字符
  • 您可以使用+连接字符串;和
  • 您可以使用p测试值if (p % 2) == 0是否均匀(当然,奇数会导致(p % 2) == 1评估为真)。

那应该所有你需要自己编写代码。

答案 1 :(得分:-1)

使用上面提到的所有优秀建议,我建议采用重构方法,其中paxdiablo提到并由mhawke增强的边缘条件可以满足,但不需要使用if-else语句。

从paxdiablo可以看出,如果字符串长度是奇数(模数函数返回1),则字符串的第一部分是: x // 2(减去0)。
如果字符串长度是偶数(模数函数返回0),则字符串的第一部分是: x // 2 - 1(减去1)。

在两种情况下(奇数和偶数长度),字符串的第二部分是: x // 2 + 1

所以我们需要减去字符串长度的模数2给出的相反值。我们可以通过均匀长度奇数和奇数长度来实现这一点。一种可能的方法是:mod =(len(s)+ 1)%2。因此可能的解决方案可能如下:

def remove_middle_character(s):
    h = len(s)//2
    mod = (len(s) + 1) % 2
    return s[:h - mod] + s[h + 1:]

if __name__ == "__main__":
    print(remove_middle_character(""))
    print(remove_middle_character("x"))
    print(remove_middle_character("xy"))
    print(remove_middle_character("apple"))
    print(remove_middle_character("banana"))
    print(remove_middle_character("discount"))