You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift实现带变位词规则与数字排除的单词反转功能求助

Swift 单词反转功能扩展实现

需求说明

  • 带变位词规则的单词反转:反转单词后将首字符移动至第三位(示例:Hello → lloeH、world → lrdow)
  • 排除数字的单词反转:仅反转非数字单词,纯数字串保持原样(示例:Hello world 1234 → olleH dlrow 1234)

修改后的代码

import Foundation

class ReverseWords {
    
    // 基础单词反转方法
    public func reverse(textField: String) -> String {
        guard !textField.isEmpty else { return "" }
        
        return textField.trimmingCharacters(in: .whitespacesAndNewlines)
            .components(separatedBy: " ")
            .map { String($0.reversed()) }
            .joined(separator: " ")
    }
    
    // 需求1:带变位词规则的单词反转
    public func reverseWithAnagramRule(textField: String) -> String {
        guard !textField.isEmpty else { return "" }
        
        let processedWords = textField.trimmingCharacters(in: .whitespacesAndNewlines)
            .components(separatedBy: " ")
            .map { word -> String in
                let reversedWord = String(word.reversed())
                guard reversedWord.count >= 3 else {
                    return reversedWord
                }
                var chars = Array(reversedWord)
                let firstChar = chars.removeFirst()
                chars.insert(firstChar, at: 2)
                return String(chars)
            }
        
        return processedWords.joined(separator: " ")
    }
    
    // 需求2:排除数字的单词反转
    public func reverseExcludingNumbers(textField: String) -> String {
        guard !textField.isEmpty else { return "" }
        
        let processedWords = textField.trimmingCharacters(in: .whitespacesAndNewlines)
            .components(separatedBy: " ")
            .map { word -> String in
                let isPureNumber = CharacterSet.decimalDigits.isSuperset(of: CharacterSet(charactersIn: word))
                return isPureNumber ? word : String(word.reversed())
            }
        
        return processedWords.joined(separator: " ")
    }
    
    // 可选:同时满足两个需求的整合方法
    public func reverseWithAnagramAndExcludeNumbers(textField: String) -> String {
        guard !textField.isEmpty else { return "" }
        
        let processedWords = textField.trimmingCharacters(in: .whitespacesAndNewlines)
            .components(separatedBy: " ")
            .map { word -> String in
                let isPureNumber = CharacterSet.decimalDigits.isSuperset(of: CharacterSet(charactersIn: word))
                guard !isPureNumber else { return word }
                
                let reversedWord = String(word.reversed())
                guard reversedWord.count >= 3 else {
                    return reversedWord
                }
                
                var chars = Array(reversedWord)
                let firstChar = chars.removeFirst()
                chars.insert(firstChar, at: 2)
                return String(chars)
            }
        
        return processedWords.joined(separator: " ")
    }
}

代码说明

  1. 基础反转方法:保留原有逻辑,处理空输入、去除首尾空白后拆分单词,反转每个单词再拼接。
  2. 变位词规则实现:
    • 先反转单词,若长度≥3,将首字符移除并插入到索引为2的位置,实现“首字符向前移动两位”的效果。
    • 长度不足3的单词直接返回反转结果,避免数组越界。
  3. 数字排除实现:
    • 使用CharacterSet.decimalDigits判断单词是否为纯数字,比Int(word)更可靠(支持超长数字串)。
    • 纯数字单词直接返回,非数字单词执行反转。
  4. 整合方法:同时应用变位词规则和数字排除逻辑,一次性满足两个需求。

内容的提问来源于stack exchange,提问作者Gucci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 15:39:13