专业编程基础技术教程

网站首页 > 基础教程 正文

Python过滤组合字符串

ccvgpt 2025-02-11 11:10:00 基础教程 24 ℃
def generate_combinations(digits, index, current, result, digit_to_letters):
    if index == len(digits):
        result.append(current)
        return
    
    current_digit = digits[index]
    for letter in digit_to_letters[current_digit]:
        generate_combinations(digits, index + 1, current + letter, result, digit_to_letters)

def filter_combinations(combinations, forbidden):
    forbidden_set = set(forbidden)
    filtered = []
    for combo in combinations:
        if not forbidden_set.issubset(combo):
            filtered.append(combo)
    return filtered

def main():
    # 定义数字到字母的映射
    digit_to_letters = {
        '0': ['a', 'b', 'c'],
        '1': ['d', 'e', 'f'],
        '2': ['g', 'h', 'i'],
        '3': ['j', 'k', 'l'],
        '4': ['m', 'n', 'o'],
        '5': ['p', 'q', 'r'],
        '6': ['s', 't'],
        '7': ['u', 'v'],
        '8': ['w', 'x'],
        '9': ['y', 'z']
    }
    
    # 输入数字字符串和屏蔽字符串
    digits = input("请输入数字字符串:")
    forbidden = input("请输入屏蔽字符串:")
    
    # 生成所有可能的组合
    combinations = []
    generate_combinations(digits, 0, "", combinations, digit_to_letters)
    
    # 过滤掉包含屏蔽字符串的组合
    filtered_combinations = filter_combinations(combinations, forbidden)
    
    # 输出结果
    print("过滤后的组合:", " ".join(filtered_combinations))

if __name__ == "__main__":
    main()

Tags:

最近发表
标签列表