📌  相关文章
📜  打印给定字符串的所有位置,两边的较小字符相等(1)

📅  最后修改于: 2023-12-03 15:25:46.452000             🧑  作者: Mango

打印给定字符串的所有位置,两边的较小字符相等

本程序旨在找到给定字符串中,两端较小的字符相等的所有位置。

输入

请在程序中使用input()函数输入字符串,可以包含任何字符,包括但不限于字母、数字、标点符号和空格。

输出

程序将返回一个列表,其中包含所有两端较小字符相等的子串的起始位置。

程序思路
  1. 定义一个空列表,命名为result,用于储存结果。

  2. 遍历从第一个字符开始到第n-1个字符结束的子串,其中n为字符串的长度。

  3. 对于每个子串,找到首位两个字符中较小的那一个,判断这个字符是否同时存在于子串的首尾位置。

  4. 若条件成立,则将该子串的起始位置加入result列表中。

  5. 最终返回result列表。

程序代码
def find_positions():
    inputstr = input("请输入字符串:")
    strlength = len(inputstr)
    result = []
    for i in range(strlength-1):
        for j in range(i+1, strlength):
            firstchar = min(inputstr[i], inputstr[j])
            if firstchar in (inputstr[i], inputstr[j]):
                sub = inputstr[i:j+1]
                if sub[0] == sub[-1]:
                    result.append(i)
                    break
    return result
测试案例

测试用例 1:

输入

请输入字符串:abcdbdcdef

输出

[0, 4, 7]

测试用例 2:

输入

请输入字符串:a bc de f ghi ij kl mlk ihbg gcde af

输出

[0, 5, 11, 18, 19, 21, 23]

测试用例 3:

输入

请输入字符串:1234567890

输出

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]