zoukankan      html  css  js  c++  java
  • 反转字符串, 以单词反转句子

    // 给一个字符串,将其按照单词顺序进行反转。比如说 "the sky is blue", 那么反转就是 "blue is sky the"。
    // 反转字符串
    fileprivate func reverse<T> (_ chars: inout [T], _ start: Int, _ end: Int) {
        // 首下标, 末下标
        var start = start, end = end
        
        while start < end {
            
            // 交换两个下标之间的数据
            (chars[start], chars[end]) = (chars[end], chars[start])
            
            // 下标向中间移动
            start += 1
            end -= 1
        }
    }
    
    // 反转句子, 以单词反转
    func reverseWords(s:String?) -> String? {
        
        // 如果字符串不存在则返回
        guard let s = s else {
            return nil
        }
        
        // 将字符串转换为字符数组
        var chars = Array(s), start = 0
        
        // 反转字符数组
        reverse(&chars, 0, chars.count - 1);
        
        // 遍历字符数组
        for i in 0 ..< chars.count {
            
            // 如果下标i走到空格, 直到末尾
            if i == chars.count - 1 || chars[i+1] == " " {
                
                // 反转从start到i这段数组当中的字符
                reverse(&chars, start, i)
                
                // start后移, 跳过空格
                start = i + 2
            }
        }
        
        // 返回反转后的字符串
        return String(chars)
    }
    
    // 反转前
    let str = "the sky is blue"
    
    // 打印
    print("反转前: " + str)
    
    // 反转后
    let reverseStr:String? = reverseWords(s: str)
    
    // 打印
    print("反转后: " + reverseStr!)
  • 相关阅读:
    mysql大数据的分表
    php settype()和gettype()
    php的类型转换
    php 时间戳和时间的转换
    mysql的数据类型
    thinkphp vender
    (function(){})();和(function(){}())每个括号的用途和区别
    数字的空洞 水 南邮NOJ 1071
    111... 南邮NOJ 1079
    阿里在线笔试题 折半方法求最接近sum值
  • 原文地址:https://www.cnblogs.com/ZeroHour/p/10109618.html
Copyright © 2011-2022 走看看